2010-02-07 16 views
14

Ho un riferimento a un elemento DOM e un oggetto jQuery che è il risultato di un selettore e voglio controllare se quel determinato elemento DOM è in quello oggetto jQuery. A corto di loop attraverso l'intero oggetto jQuery e controllando l'uguaglianza, c'è un modo semplice in jQuery per fare questo?jQuery: Controlla se l'oggetto jQuery contiene (include) l'elemento DOM esatto

ho cercato .contains, :contains, .has e :has, e nessuno di loro sembrano fare il lavoro. Inoltre, dovrei menzionare che tutti gli elementi con cui lavoro sono sullo stesso livello dell'albero DOM, quindi non è necessario preoccuparsi dei genitori/figli.

+0

Devi essere più chiara su ciò che si sta cercando. Corrispondono all'ID? –

+0

Sì, avrei dovuto elaborare di più. 1. NON ho ID associato a questi elementi. Sarebbe molto più facile se lo facessi. 2. Il mio problema reale era determinare se un elemento esisteva nei fratelli precedenti o nei fratelli successivi di un dato elemento di pivot. Pertanto, tutte le soluzioni che richiedono l'elemento padre come quelli che usano .find() non sono applicabili. – Suan

risposta

9

simile a Gumbos risposta, ma più sottile:

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

Prova questo:

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

elem è l'elemento DOM che si sta cercando.

+0

quello che stavo cercando. La risposta accettata mancava della parte importante di ricerca ("*"). – MatteS

0

Kinda hacker, ma funziona per me:

$.inArray($('#single-element').get(0), $('.many-elements').get()) != -1 
12
$yourJqueryObject.is(yourDomElement) 

Vedi .is() aggiunto in 1.6.

1

Simile alla risposta di David, ma ancora più sottile:

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