将'e.target'与jQuery对象进行比较

dub*_*elj 36 javascript jquery click jquery-events

我想做的事:

( clickedObject === someDiv ) //returns true or false
Run Code Online (Sandbox Code Playgroud)

我尝试了什么

( $(e.target) === $('.selector') ); //returns a false negative.
Run Code Online (Sandbox Code Playgroud)

我的解决方法

( $(e.target).attr('class') === $('.selector').attr('class') ); //works as intended, not so clean though.
Run Code Online (Sandbox Code Playgroud)

将我点击的对象与DOM中的对象进行比较的正确方法是什么?

Ada*_*kis 39

要检查是否e.target有此类,您可以使用该hasClass功能.

if ($(e.target).hasClass("selector"))
Run Code Online (Sandbox Code Playgroud)

或者,如果你真的想比较对象,请注意jQuery选择器返回一个项集合,所以我想你会想要

if (e.target === $('.selector')[0])
Run Code Online (Sandbox Code Playgroud)


Boj*_*les 32

你很亲密 .is()改为使用:

if($(e.target).is('.selector')) {
    // Your code
}
Run Code Online (Sandbox Code Playgroud)

这里的技巧是你包装e.target一个jQuery对象,以允许它访问所有有用的jQuery方法.

如果你只是看看是否e.target有某个班级,请尝试使用.hasClass()以下代码.is():

if($(e.target).hasClass('selector')) {
    // Your code
}
Run Code Online (Sandbox Code Playgroud)

这两种方法都有效,虽然.hasClass()对代码的作用更清楚,但比使用方法更快.is()

  • 如果您已经有对要比较的元素的引用,则以下有效: $myButton.is(e.target) (2认同)