使用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>
答案 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')