Compare 'e.target' to a jQuery object

27,948

Solution 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])

Solution 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()

Share:
27,948
dubbelj
Author by

dubbelj

Updated on September 03, 2022

Comments

  • dubbelj
    dubbelj over 1 year

    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?