协慌网

登录 贡献 社区

获取触发事件的元素的 ID

有没有办法获取触发事件的元素的 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应该包含 id "aaa" ,如果事件是从第一个表单触发,并且"bbb" ,如果事件是从第二个表单触发的话。

答案

在 jQuery 中, event.target始终引用触发事件的元素,其中'event'是传递给函数的参数。 http://api.jquery.com/category/events/event-object/

$(document).ready(function() {
    $("a").click(function(event) {
        alert(event.target.id);
    });
});

另请注意, 'this'也可以,但它不是 jQuery 对象,所以如果你想在它上面使用 jQuery 函数,那么你必须将它称为'$(this)' ,例如:

$(document).ready(function() {
    $("a").click(function(event) {
        // this.append wouldn't work
        $(this).append(" Clicked");
    });
});

作为参考,试试吧!有用!

jQuery("classNameofDiv").click(function() {
    var contentPanelId = jQuery(this).attr("id");
    alert(contentPanelId);
});

虽然在其他帖子中提到过,但我想拼出这个:

$(event.target).id未定义

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

event.target.id也给出了 id 属性。

this.id给出了 id 属性。

$(this).id未定义。

当然,差异在于 jQuery 对象和 DOM 对象。 “id” 是一个 DOM 属性,因此您必须在 DOM 元素对象上才能使用它。

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