这是我应该如何在jQuery中使用.next([selector])?

时间:2011-09-14 13:31:24

标签: javascript jquery

使用jQuery,我在div中选择了<a>并希望使用$(this)来选择下一个div(我想这会使它成为叔叔?)。

我想为我的所有内容使用相同的类名,因此我只想使用相对于$(this)的内容。

以下是我所追求的行为的一个例子:

<div><a>click</a></div>
<div> SELECT THIS DIV after click a </div>  (real code below)

我一直在玩,如果我不关闭<a>周围的div,它可以正常工作。 .next('div")</a>之后找到div,但我需要关闭<a>的div。 (所以我想这会使<a>成为我所在的div的孩子。)

所以我需要访问我所在的叔叔div?我该怎么做 -

到目前为止,我一直在玩这个:

JS:

 $(document).ready(function() {
  $('.demo > .row').hide();  
  $('.demo > .box > a').click(function() {
    $(this).next().slideToggle('fast')
    .siblings('div:visible').slideUp('fast');
  });
});

HTML:

<div class="demo">
    <div class="box"><a>Title 1</a></div>
    <div class="row">
        <ul >
            <li> <a >  <img >  </a></li>
        </ul>
    </div>
</div>

4 个答案:

答案 0 :(得分:3)

查看jQuery提供的traversal functions。在这种情况下,您需要parent后跟next

$(this).parent().next().slideToggle...

答案 1 :(得分:2)

您需要将文档树从“当前”<a>向上遍历到其父<div>,然后横向遍历以查找下一个<div>

$(this).closest("div").next().slideToggle('fast')
       .siblings('div:visible').slideUp('fast');

Traversing向上可以通过许多功能完成;我更喜欢closest,因为如果你的标记发生变化,它就不那么容易破解了。

另请注意,如果您点击最后一个兄弟<div>的主播子女,则next()来电将不会产生任何元素。

答案 2 :(得分:0)

您是否尝试过使用parent

$(this).parent().next();

这样的东西

答案 3 :(得分:0)

要获得'叔叔',你需要先得到父母,然后是兄弟。

$(this).parent('div').next('div')

或者,如果a嵌套在其他元素中,您可以使用closest获取父div

$(this).closest('div').next('div')