Question

I have a reference to a DOM element, and a jQuery object which is the result of a selector, and I want to check if that specific DOM element is in that jQuery object. Short of looping through the whole jQuery object and checking for equality, is there a straightforward way in jQuery to do this?

I have tried .contains, :contains, .has and :has, and none of them seem to do the job. Also, I should mention that all the elements I'm working with are on the same DOM tree level, so there is no need to worry about parents/children.

Was it helpful?

Solution

similar to Gumbos answer, but slimmer:

if ( obj.filter(function() { return this == el; }).length ) {
    // obj contains el
}

OTHER TIPS

$yourJqueryObject.is(yourDomElement)

See .is() added in 1.6.

Try this:

var result = $("selector").find("*").filter(function() {
    return this === elem;
}).length === 1;

elem is the DOM element you are looking for.

Similar to David's answer but even slimmer:

if ( obj.filter(el).length ) {
    // obj contains el
}

Kinda hackish, but works for me:

$.inArray($('#single-element').get(0), $('.many-elements').get()) != -1
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top