默认情况下隐藏所有.setupData
。
当我点击.setupTitle
课程时,我希望立即(在DOM中的下一个).setupData
切换。
我尝试了
的变体$(".setupTitle").click(function(){
$(this).parent(".setupBlock").next(".setupData").slideToggle();
});
但没有骰子。
<div class="setupBlock">
<div class="setupTitle">
consignees <img src="img/open.png" class="openArrow"">
</div>
<div id="consigneeDiv" class="setupData">
consignees
</div>
<div class="clr"></div>
</div>
<div class="setupBlock">
<div class="setupTitle">
locations <img src="img/open.png" class="openArrow"">
</div>
<div id="locaDiv" class="setupData">
locations
</div>
<div class="clr"></div>
</div>
<div class="setupBlock">
<div class="setupTitle">
users <img src="img/open.png" class="openArrow"">
</div>
<div id="usersDiv" class="setupData">
users
</div>
<div class="clr"></div>
</div>
<div class="setupBlock">
<div class="setupTitle">
next numbers <img src="img/open.png" class="openArrow"">
</div>
<div id="nnDiv" class="setupData">
next numbers
</div>
<div class="clr"></div>
</div>
答案 0 :(得分:2)
.setupTitle
是.setupData
的兄弟,您可以致电:
$(".setupTitle").click(function(){
$(this).siblings(".setupData").slideToggle();
});
或者如果您更喜欢使用.next()
,可以使用:
$(".setupTitle").click(function(){
$(this).next().slideToggle();
});
或使用.parent()
的方法,您需要使用.find()
而不是.next()
,因为您寻找的元素在您回溯到父级后就是一个孩子:
$(this).parent(".setupBlock").find(".setupData").slideToggle();
.find()
查找后代,而.next()
查找下一个元素
答案 1 :(得分:0)
你不想要.next()
,你想要.find()
:
$(".setupTitle").click(function(){
$(this).parent(".setupBlock").find(".setupData").slideToggle();
});
<强> jsFiddle example 强>
首先,使用$(this).parent(".setupBlock")
将DOM上传到父级。然后,.next()
元素将成为您不想要的下一个兄弟<div class="setupBlock">
。使用.find(".setupData")
保留在div中,然后在其中搜索以找到相对.setupData
div。
答案 2 :(得分:0)
在您的代码中只需查找父亲的结果:
$(".setupTitle").click(function(){
$(this).parent().find(".setupData").slideToggle();
});
希望它有所帮助!