JQuery цикл через два уровня элементов - PullRequest
1 голос
/ 26 мая 2009

У меня есть HTML, который выглядит так:

<div class="block">
    <div id="item1"></div>
    <div id="item2"></div>
</div>

<div class="block">
    <div id="item3"></div>
</div>

Я пытаюсь проверить, будет ли мой div содержать определенный элемент. Мне нужно зациклить хотя каждый блок, затем получить каждый элемент.

Что у меня так далеко

    $('.block:has(div)').each(function() {
            // do something with the block
    });

Что здорово, потому что он вернет все блоки, в которых есть предметы. Но мне нужно что-то вроде

    $('.block:has(div)').each(function() {
             $('current place in loop' + li).each(function() {
                    // do something with each item element, before the block loop has finished
             });
    });

Есть идеи?

Ответы [ 4 ]

3 голосов
/ 26 мая 2009

Я надеюсь, что вы имеете в виду это:

$('.block').each(function(){
    $(this).find('div').each(function(){
        //do your stuff
    });
});
2 голосов
/ 26 мая 2009

Я бы построил селектор внутри вложенного каждого или использовал бы поиск:

 $('.block:has(div)').each(function() {
     $('#' + this.id +  ' li').each(function() {
         //do stuff on list item            
     });
 });

OR

 $('.block:has(div)').each(function() {
     $(this).find('li').each(function() {
         //do stuff on list item            
     });
 });
2 голосов
/ 26 мая 2009

Я не уверен на 100%, отвечает ли это тому, что вы спрашиваете, но не будет работать следующее:

$('.block:has(div)').each(function() {
  $(this).children('div').each(function() {
    // do something with each item element, before the block loop has finished
  });
});
1 голос
/ 26 мая 2009

Вы пытались использовать

$("#" + this)


Он используется в основном каждый пример документации JQuery (harshath уже опубликовал ... слишком медленно, всхлип )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...