2016-07-27 2 views
4

У меня есть элемент и набор jQuery. Я хотел бы проверить, находится ли элемент внутри набора jQuery. Мне нужно такое условие.Проверьте, есть ли элемент в наборе jQuery

if ($someUL.find("> li > a").contains(myElement)) { 
    ... 
} 

Здесь метод contains не существует, я использовал его, чтобы продемонстрировать свою цель. Я знаю несколько методов, подобных этому, например, has, is, $.contains, но все они имеют разное значение.

+1

'если ($ someUL.find ("> литий> а"). Фильтр (MyElement) .length)' ??? Теперь я не уверен, каково ваше точное ожидаемое поведение ?! А как насчет использования: '$ someUL.find (myElement) .length'? Поскольку в зависимости от вашего варианта использования и соответствующей разметки HTML, этого может быть достаточно. Теперь наверняка вам лучше предоставить самому MCVE –

+0

@ A.Wolff, спасибо, да, ваше предложение тоже работает, но я предпочитаю использовать для этого 'index'. –

+1

И это не работает для вас: 'myElement.is ($ someUL.find ("> li> a "))'? –

ответ

2

Здесь вы можете использовать метод .index(). Если элемент не найден в наборе, .index() вернет -1 .:

if($someUL.find("> li > a").index(myElement) > -1){ 
    //myelement exists in set $someUL.find("> li > a") 
} 
+0

Thank вы за быстрый ответ, это лучше для этого вопроса, чем использование IMO фильтра. Кроме того, это должно быть немного более эффективным с точки зрения производительности. –

+0

@ ZoltánTamási: рад, что это помогает :), не забудьте принять ответ. –

2

Вы можете иметь свой ответ, прочитав jQuery API.

Я думаю, что ваша цель - проверить элемент, который соответствует селектору. Ответ заключается в использовании .is().

В соответствии с API:

  • .has() используется в Promise и является экспериментальной технологией
  • .contain() или $.contain() был оценен потомку
  • .is() может быть использован, чтобы решить, селектор, элементы или выбор даже если функция.

так, вы должны использовать .is() здесь API

+0

Спасибо за резюме, я не знал, что 'is' может принять другой объект jQuery, чтобы проверить сдерживание. Однако для этой простой задачи, когда у меня есть точный элемент DOM, использование 'index' лучше подходит IMO. Но ты определенно бог мой верх. –

+0

А также, пожалуйста, простите мне, что у меня не было свободной недели, чтобы прочитать jQuery API :) –

+0

Перед вашим вопросом я никогда не использую '.has()'. После вашего вопроса я понимаю, что функция '.has()', может быть, много ответов на ваш вопрос, выберите лучшее. Я многому учусь от ответов других :) – TomIsion

Смежные вопросы