3

我有以下代码

  <div>
 <a href="#" class="clickMe">test</a>
 <ul>
     <li class="action_li">1</li>
     <li class="action_li">2</li>
 </ul></div> <div>
 <a href="#" class="clickMe">test</a>
 <ul>
     <li class="action_li">3</li>
     <li class="action_li">4</li>
 </ul>

我想循环所有与单击<li>相同的内容<div><a>

$("a.clickMe").live("click", function(eve){
   eve.preventDefault();
   $('.action_li').each(function(index) {
      console.debug(this);
   }); 
});

但当然这会让我得到所有 4<li>而不是封闭的两个所以我想要一些以开头$(this)和结尾的东西.each()

4

4 回答 4

5

方法很多,例子:

   $(this).parent().find("li.action_li").each(function(index) {
      console.debug(this);
   }); 

或者:

   $(this).next("ul").children("li.action_li").each(function(index) {
      console.debug(this);
   });

等等

于 2010-06-02T15:38:31.150 回答
4

这应该有效:

$("a.clickMe").live("click", function(eve){
   eve.preventDefault();
   $('.action_li', $(this).parent()).each(function(index) {
      console.debug(this);
   }); 
});

选择器旁边的第二个参数会将搜索限制为仅 DOM 树的一部分,在这部分中,div它是a元素的父级。

于 2010-06-02T15:39:36.187 回答
3

您需要获取 的<ul>兄弟元素<a>,然后获取其子元素。

例如:

$(this).siblings('ul').children('li.action_li').each(function(index) {
    //...
});

您也可以调用$(this).next()$(this).nextAll('ul')

于 2010-06-02T15:38:19.340 回答
0

这可能有效:

$(this).parents('div').find('li').each(...
于 2010-06-02T15:39:57.477 回答