What I want to do:
( clickedObject === someDiv ) //returns true or false
What I tried
( $(e.target) === $(\'.selector\') ); //r
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()
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])
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/
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.