2015-09-24 2 views
1

У меня есть следующий HTML. (это анализируется системой) Как выполнить действие для каждого элемента «Найти». Я хотел бы выполнить действие с каждого найденного якоряjquery выполнить действие с каждым элементом, найденным с .find

HTML

<ul> 
    <li class="category"> 
    <h2>title</h2> 
    <ul> 
     <li class="section"> 
     <h3>section title</h3> 
     <ul class="article-list> 
      <li><a href="#">link</a></li> 
     </ul> 
     </li> 
    </ul> 
    </li> 
    <li class="category"> 
    <h2>title</h2> 
    <ul> 
     <li class="section"> 
     <h3>section title</h3> 
     <ul class="article-list> 
      <li><a href="#">link</a></li> 
     </ul> 
     </li> 
     <li class="section"> 
     <h3>section title</h3> 
     <ul class="article-list> 
      <li><a href="#">link</a></li> 
     </ul> 
     </li> 
    </ul> 
    </li> 
</ul> 

JavaScript/JQuery

$("ul li.category h2").each(function() { 
    $category = $(this);  
    //do something with category; 

    $($category).each(function() { 
     console.log("category: " + $(this).text()); 

     $(this).find("ul.article-list li a").each(function() { 
     //do something 
     }); 
    }); 
}); 
+0

** в чем проблема? ** – JSelser

ответ

2

Это единственный HTML на странице? Поскольку

$("a").each(function() { 
    // do something 
}); 

будет делать только штрафом

Если это не единственный код на странице, это только список на странице? В этом случае

$("ul li a").each(function() { 
    // do something 
}); 

будет делать только отлично.

Если что-то более конкретно требуется, я предлагаю писать его как

$(".article-list > li > a").each(function() { 
    // do something 
}); 

Вы пытаетесь найти Чайлдс из элемента H2, но H2 не имеет Чайлдс. Ваш код может указывать на то, что ваш HTML-код помечен как этот

<h2> 
    <ul class="article-list"> 
    <li><a href="#">link</a></li> 
    </ul> 
</h2> 

EDIT: Кроме того, ваш html отмечен ошибкой. <ul class="article-list> должно быть <ul class="article-list">

+0

Вы правы. Я был не в фокусе. У H2 нет детей. Спасибо за ответ. Я обновил свой код. Спасибо. – Babulaas

0

Попробуйте это, как и в случае с текущими элементами html.

$("ul li.category ul.article-list li a").each(function() { 
    console.log("category: " + $(this).text()); 
    // do your action here 
}); 
+0

Что бы добиться успеха в консолировании якоря? Он хочет зарегистрировать имя категории для ясности и сделать что-то еще с якорем. –

+0

Это просто для целей тестирования, чтобы проверить элементы, возвращаемые селектором. Путем игнорирования журнала он может выполнить действие внутри него. – Ranjana

0

Ваш HTML синтаксис неправильно, то вы пропустили закрытие "article-list" class.Then нет необходимости каждый в своем case.You может выбрать все якорный тег, как этот $('a') Если вы хотите, чтобы выбрать все якоря в "article-list" класс то делать, как это $(".article-list a")

Работа demo

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