我想知道是否有人可以解决这个问题,因为我现在已经尝试了40分钟了,这应该不会那么困难。
我有一些嵌套的div,如:
<div>
<div>
Some info - <a href='#' class='slick-toggle'>[more info]</a>
<div class='slickbox'>
<div>
More Content...
<a href='#' class='slick-toggle2'>see full XML reply</a><br />
<div class='slickbox2'>
<div class='xmlOutput'>
more content from XML source
</div>
</div>
</div>
</div>
</div>
现在我想要发生的是当单击“光滑切换”类的链接时,带有“slickbox”类的Div隐藏或显示。在这个Div中,我点击了这个类“slick-toggle2”的其他链接我想要隐藏或显示类“slickbox2”的div(当页面被加载时,这两个div都被隐藏)。因此,如果正在显示“光滑切换”,您只能切换“slick-toggle2”。这应该很简单,但是切换仅适用于第一个DIV。任何人都可以看到我的jQuery有什么问题
$(document).ready(function() {
$('.slickbox').hide();
$('.slickbox2').hide();
$('a.slick-toggle2').click(function() {
$(this).next("div.slickbox2").toggle(400);
return false;
});
$('a.slick-toggle').click(function() {
$(this).next("div.slickbox").toggle(400);
return false;
});
});
谁能看到我哪里错了?我想我疯了吗?
请注意,我从代码中删除了超链接中的A,因为它被阻止了?
答案 0 :(得分:7)
这是因为非常下一个元素是<br />
,所以不是这样:
$(this).next("div.slickbox2").toggle(400);
你需要这个:
$(this).nextAll("div.slickbox2:first").toggle(400);
.next()
获取非常下一个元素如果它与选择器匹配。 .nextAll()
会经历以下所有兄弟姐妹,而您正在获得匹配的:first
个。