jQuery поиск, если найден дочерний элемент - PullRequest
2 голосов
/ 26 сентября 2011

Привет, мой HTML выглядит так:

<ul class="first">
  <li>
    <div class="tg-hey">hey</div>
    <div class="tg-hi">hi</div>
    <div class="tg-hoi">hoi</div>
  </li>
</ul>
<ul class="second">
  <li>
    <div class="tg-hey">hey</div>
    <div class="tg-hi">hi</div>
    <div class="tg-hoi">hoi</div>
  </li>
</ul>
<ul class="third">
  <li>
    <div class="tg-hey">hey</div>
    <div class="tg-hi">hi</div>
    <div class="tg-hoi">hoi</div>
  </li>
</ul>

Мне нужно найти, существует ли (например, <ul class="second">) <div class="tg-hey"> или нет.

как я могу это проверить?

Ответы [ 5 ]

5 голосов
/ 26 сентября 2011
if($(".second:has(.tg-hey)").length) {
    // do something
}

Демо.

Если вам нужно сделать что-то с соответствующими элементами, вы недействительно нужно сначала проверить, так как ничего не произойдет, если нет совпадений, поэтому:

$(".second:has(.tg-hey)").hide();

абсолютно безопасен.

Другой способ - использовать .is и :has:

if($(".second").is(":has(.tg-hey)")) {
    // do something
}

Демонстрация.

но я бы не стал этого делать, так как это просто слишком много для jQuery для довольно простой задачи.

4 голосов
/ 26 сентября 2011

Просто создайте селектор и проверьте длину результата (если он равен 0, он будет ложным, иначе это правда):

if ($('ul.second div.tg-hey').length) {
    alert("It exists");
}

http://jsfiddle.net/SgnvH/

2 голосов
/ 26 сентября 2011
$(".second").has(".tg-hey").length > 0
1 голос
/ 26 сентября 2011

Как это?

if ($('ul.second div.tg-hey').length > 0)
  // exists
else
  // doesn't
0 голосов
/ 26 сентября 2011
$('.className').length

если $('.className').length == 0, то элемент не существует.

Редактировать:

$('.second').length скажет вам, сколько элементов имеет класс"second".

$('.second .tg-hey').length скажет вам, сколько элементов имеет класс "tg-hey" внутри класса "second".

Это предполагает, что вы используете jQuery!

...