jQuery: Comprobar si el objeto contiene jQuery (incluye) exacta elemento DOM
Pregunta
Tengo una referencia a un elemento DOM, y un objeto jQuery que es el resultado de un selector, y quiero comprobar si ese elemento DOM específico es en ese objeto jQuery. A falta de bucle a través de todo el objeto jQuery y la comprobación de la igualdad, hay una manera sencilla de jQuery para hacer esto?
He tratado .contains
, :contains
, .has
y :has
, y ninguno de ellos parecen hacer el trabajo. Además, debo mencionar que todos los elementos con los que trabajo están en el mismo nivel del árbol DOM, así que no hay necesidad de preocuparse por los padres / hijos.
Solución
similar a la respuesta Gumbos, pero más delgado:
if ( obj.filter(function() { return this == el; }).length ) {
// obj contains el
}
Otros consejos
$yourJqueryObject.is(yourDomElement)
Ver .is () añadido en 1.6.
Prueba esto:
var result = $("selector").find("*").filter(function() {
return this === elem;
}).length === 1;
elem
es el elemento DOM que busca.
Al igual que en la respuesta de David pero incluso más delgado:
if ( obj.filter(el).length ) {
// obj contains el
}
Un poco hacker, pero funciona para mí:
$.inArray($('#single-element').get(0), $('.many-elements').get()) != -1