我设置了很多个按钮。
点击任意一个按钮,该按钮弹出一个弹窗。
我希望根据按钮的不同,弹窗的内容不同。
需要按钮的id名。
<div id="test">test</div>
<script>
document.getElementById("test").onclick=function(){
console.log(this.id)
}
</script>
jquery 的办法
<body>
<input id="t1" type="button" value='fff'>
<input id="t2" type="button" value='fff'>
<input id="t3" type="button" value='fff'>
<input id="t4" type="button" value='fff'>
<script type="text/javascript">
$(document).ready(function(){
$('input').each(function(){
alert($(this).attr('id'));
});
});
</script>
</body>
事件机制
<button class="btn" id="a">aaa</button>
<button class="btn" id="b">bbb</button>
var btn = document.getElementsByTagName("button");
document.body.onclick = function(event){ //冒泡处理
var id = event.target.id;
console.log(id);
}
假设你要的按钮是button
,那么给button
设置点击事件的回调函数:
button.addEventListener('click', function() {});
在事件回调函数中,第一个参数往往是事件对象,这个对象包含了事件相关的很多信息,e.target
就是发生点击的实际元素,因此想要到button
的ID 直接取e.target.id
就行了。
button.addEventListener('click', function(e) {
console.log(e.target.id);
});
需要补充一点的是,不建议直接给所有button
元素逐一添加事件监听,一般是通过事件委托完成的,这方面可再了解下。
//获取点击事件对象
function getEventJquery(event) {
event = event ? event : window.event;
return event.srcElement ? event.srcElement : event.target;
}
$(".nav").click(function (event) {
var obj = getEventJquery(event);
var $obj = $(obj);
$("a").removeClass("is-selected");
$obj.addClass("is-selected");
alert(obj.id)
});
8 回答5.8k 阅读✓ 已解决
9 回答9.2k 阅读
6 回答4.7k 阅读✓ 已解决
5 回答3.5k 阅读✓ 已解决
4 回答7.9k 阅读✓ 已解决
7 回答9.8k 阅读
5 回答7.1k 阅读✓ 已解决
尽量使用
event.target.id
,不要使用this.id
。当使用事件委托的时候,
this
指向的是绑定监听事件的元素,而非被点击的元素。event.target.id
则始终指向被点击的元素。