Compare 'e.target' to a jQuery object

和自甴很熟 提交于 2020-02-19 07:58:59

问题


What I want to do:

( clickedObject === someDiv ) //returns true or false

What I tried

( $(e.target) === $('.selector') ); //returns a false negative.

My workaround

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

What is the right way to compare the object I clicked to an object in the DOM?


回答1:


To check if e.target has this class you can use the hasClass function.

if ($(e.target).hasClass("selector"))

Or, if you really want to compare objects, note that jQuery selectors return a collection of items, so I think you'll want

if (e.target === $('.selector')[0])



回答2:


You're close. Use .is() instead:

if($(e.target).is('.selector')) {
    // Your code
}

The trick here is that you wrap e.target in a jQuery object to allow it access to all the useful jQuery methods.

If you're just seeing whether e.target has a certain class, try using .hasClass() in place of .is():

if($(e.target).hasClass('selector')) {
    // Your code
}

Either method works, although .hasClass() is a little clearer as to what the code does, and is faster than using .is()




回答3:


If you want to match the element that the event is attached to you can use $(this), or if you want to find which element triggered the event use $(event.target).

Below is an example of both of these.

http://jsfiddle.net/Phunky/TbJef/

Unless you're using event delegation these will be the same though and if there the same element.




回答4:


Obviously using .is() function is the best solution here.

If you find yourself doing such comparison, try to check if it is possible to use embedded jQuery mechanisms like this:

$(element).on("click", ".selector", function() {
    alert("clicked");
});

Second argument in the .on() method is a target selector. When using this construction (read more: http://api.jquery.com/on/#direct-and-delegated-events) there will be no need to make any additional comparisons.

https://jsfiddle.net/m5zysufy/



来源:https://stackoverflow.com/questions/8606269/compare-e-target-to-a-jquery-object

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!