javascript - 获取触发事件的元素的ID

  显示原文与译文双语对照的内容

是否可以获取激发事件的元素的标识?

我想的是:


<html>

 <head>
 <script type="text/javascript" src="starterkit/jquery.js"></script>
 <script type="text/javascript">
 $(document).ready(function () {
 $("a").click(

 function () {
 var test = caller.id;
 alert(test.val());
 });
 });
 </script>
 </head>

 <body>
 <form class="item" id="aaa">
 <input class="title"></input>
 </form>
 <form class="item" id="bbb">
 <input class="title"></input>
 </form>
 </body>

</html>

当然,var test 应该包含标识 "aaa",如果事件是从第一个窗体和 "bbb" 激发的,如果事件是从第二个窗体激发的。

时间:

尽管在其他文章中提到过,我想把它拼写出来:

$(event.target).id 未定义

$(event.target)[0].id 给出了标识属性。

event.target.id 还提供了标识属性。

this.id 给出了标识属性。

$(this).id 未定义。

当然,区别在于jQuery对象和DOM对象之间。 "标识"是一个DOM函数,所以必须在DOM元素对象上才能使用它。

( 它把我绊倒了,所以它可能被别人绊倒了)

对于所有事件,不仅限于 jQuery,你可以使用


var target = event.target || event.srcElement;
var id = target.id

如果 event.target 失败,它将返回到 event.srcElement 以进行 IE 。 为了阐明上面的代码不需要 jQuery,但也可以使用 jQuery 。

我动态地生成一个数据库,用JSON接收数据并将它的放入一个表格中。 每个表格行都有一个惟一的标识,这是进一步操作所需要的。因此,如果修改 DOM,你需要另外的方法:


$("table").delegate("tr","click", function() {
 var id=$(this).attr('id');
 alert("ID:"+id); 
});

作为jQuery对象的源元素应该通过


var $el = $(event.target);

这将获得单击的源,而不是单击函数的元素。 当单击事件位于一个父对象 EG.a 上的click事件时很有用,并且你需要单击的单元格


$("tr").click(function(event){
 var $td = $(event.target);
});

这在较高的z-index 上工作,而不是上面提到的事件参数:


$("#mydiv li").click(function(){

 ClickedElement = this.id;
 alert(ClickedElement);
});

这样你就总能得到( 在本例中,) 元素的标识。 同时单击父元素的子元素。

...