jQuery: проверка, содержит ли объект jQuery (включает) точный элемент DOM - PullRequest
14 голосов
/ 07 февраля 2010

У меня есть ссылка на элемент DOM и объект jQuery, являющийся результатом селектора, и я хочу проверить, находится ли этот конкретный элемент DOM в этом объекте jQuery. Если не считать цикл всего объекта jQuery и проверку на равенство, есть ли в jQuery простой способ сделать это?

Я пробовал .contains, :contains, .has и :has, и, похоже, никто из них не справился с этой задачей. Кроме того, я должен отметить, что все элементы, с которыми я работаю, находятся на одном и том же уровне дерева DOM, поэтому нет необходимости беспокоиться о родителях / детях.

Ответы [ 5 ]

12 голосов
/ 13 мая 2011
$yourJqueryObject.is(yourDomElement)

См. .is () добавлено в 1.6.

9 голосов
/ 08 февраля 2010

похоже на ответ Гумбоса, но тоньше:

if ( obj.filter(function() { return this == el; }).length ) {
    // obj contains el
}
2 голосов
/ 07 февраля 2010

Попробуйте это:

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

elem - это элемент DOM, который вы ищете.

1 голос
/ 29 июня 2014

Аналогично ответу Дэвида, но еще тоньше:

if ( obj.filter(el).length ) {
    // obj contains el
}
0 голосов
/ 07 февраля 2010

Вроде хак, но у меня работает:

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