2012-10-30 41 views
0

我有一些jQuery,当点击展开subheader时展开div标头。再点击这个subheader然后显示内容。然而,有两个副标题,我只能得到第一个显示。jQuery不扩展这两个类

我试着将选择器更改为在stackoverflow.com/questions/1041344上推荐的格式,但这只会导致子页眉在页面加载时甚至不会隐藏。这是我到目前为止有:

的jQuery:

<script type="text/javascript"> 
jQuery(document).ready(function() { 
    jQuery(".subheadingFrame, .subheadingEngine").hide(); 
    jQuery(".heading").click(function() 
    { 
     jQuery(this).next(".subheadingFrame, .subheadingEngine").slideToggle(500); 
    }); 
    jQuery(".content").hide(); 
    jQuery(".subheadingFrame, .subheadingEngine").click(function() 
    { 
     jQuery(this).next(".content").slideToggle(500); 
    }); 
}); 
</script> 

HTML:

<div id="divSparesSubHeader" class="heading">Benelli1</div> 
<div id="divSparesLastHeader" class="subheadingFrame">Frame/Subheader1</div> 
<div id="divSparesItem" class="content">Content 1</div> 
<div id="divSparesLastHeader" class="subheadingEngine">Engine/Subheader2</div> 
<div id="divSparesItem" class="content">Content 2</div> 

我已经得到了向上翻页here如果有人能帮助?

回答

2

试试这个

jQuery(".heading").click(function(){ 
     jQuery(this).nextAll(".subheadingFrame").first().slideToggle(500); 
     jQuery(this).nextAll(".subheadingEngine").first().slideToggle(500); 
}); 

.next()只针对.heading立即兄弟.. 所以,如果没有找到,它会返回一个空列表..

所以在这种情况下,更好地为目标使用.nextAll().first()

Check Fiddle

的元素
+0

感谢Sushanth,我看到小提琴的工作原理与我想要的完全一样,但我仔细检查了我的代码,现在标题不再展开(请参阅有关页面的链接)。 div id有冲突吗?我看到某个地方可以通过jQuery(this).nextAll(“#divID.subheadingFrame”)...来定义类。 – Hansel

+0

ID是唯一的网页..或者你有重复的ID的 –

+0

问题是,你的网页有重复的ID在页面上..所以当你尝试访问它的ID ..它只会得到第一个ID应该是独特的在您的网页...认为jQuery(this).nextAll(“。subheadingFrame”)。first()应该工作 –