Jquery Onclick和对象的引用被点击

时间:2009-06-25 13:06:08

标签: jquery click

我有以下jQuery表达式,在函数内部我需要对被点击的对象的引用,有没有办法做到这一点?

$('#tagList li').click(function() {
  /* contents */
});

5 个答案:

答案 0 :(得分:30)

使用

$(this)

答案 1 :(得分:7)

您可以使用返回值

$("#tagList li").bind("click", function(e) {
    alert(e.currentTarget + ' was clicked!');
});

或者如果你愿意,你可以简单地指向jQuery模式中的对象

$("#tagList li").bind("click", function(e) {
    alert($(this) + ' was clicked!');
});

如果您是jQuery的新手,我强烈建议您可以在 Remy Sharp中看到来自 jQuery for Designers 的一些截屏视频,他们非常了解jQuery的工作原理,更好的是,如何使用 console.log()来查看可以使用的对象!

答案 2 :(得分:6)

是的,this关键字引用了单击的DOM元素。你可以像这样“包装”它:

$(this)

这将允许您将其视为jQuery对象。

答案 3 :(得分:6)

关键字是您正在寻找的。通常,您会希望将jQuery函数应用于 this 来完成您的工作。例如:

$('#tagList li').click(function() {
  $(this).css({ color: 'red' });
});

答案 4 :(得分:0)

添加一个涵盖更多用例的新答案,尤其是当您要使用箭头功能时。

还建议您不要向li元素添加JS单击。相反,您应该使用嵌套在此元素内的按钮或锚点(可单击的东西)。

由于您单击的元素可能是子元素,因此需要确保定位正确的元素。

在我的示例中,我将为click分配给li内部的按钮以及该按钮上的类。标记将简单地是:

<ul id="taglist">
  <li><button class="tag-button">Tag 1</button></li>
  <!-- ... -->
</ul>

然后使用javascript:

$('#tagList li button.tag-button').click((e) => {
  const thisButton = $(e.target).hasClass('tag-button')
    ? $(e.target) : $(e.target).closest('.tag-button');
  // do something with thisButton
});

这可确保您定位的是点击所注册的元素。如果您的按钮内有任何嵌套标记(例如或),则事件目标可能是嵌套元素,而不是您想要将点击分配给的元素。