2012-08-16 76 views
0

我有這個代碼,我不能修改,我想添加一個選擇器,選擇(點擊)其下的所有元素,直到下一次出現的主要元素。問題是它們沒有嵌套,只有一個在其他下面。jQuery的選擇幫助

<div class="project name">..</div> 
<div data-project-id="1987" class="sidebar_project">...</div> 
<div data-project-id="3087" class="sidebar_project">...</div> 
<div data-project-id="8903" class="sidebar_project">...</div> 
<div data-project-id="223570" class="sidebar_project">...</div> 
<div class="project name">..</div> 
<div data-project-id="1846" class="sidebar_project">...</div> 
<div data-project-id="0935" class="sidebar_project">...</div> 
<div data-project-id="84735" class="sidebar_project">...</div> 
<div class="project name">..</div> 
<div data-project-id="11135" class="sidebar_project">...</div> 

我可以輕鬆選擇所有sidebar_projects和隱藏起來,但我希望它能夠使一個按鈕,點擊上隱藏/顯示所有sidebar_projects從它的項目名稱格到下一個項目名稱股利。

THx的

+1

是否'類=「項目名稱」意味着這些div實際上會有不同類別的不同項目名稱?你不能爲他們添加一個普通的類? – nnnnnn 2012-08-16 09:53:37

回答

4

試試這個:

$('.project.name').on('click', function(e){ 
    $(this).nextUntil('.project.name', '.sidebar_project').toggle(); 
}); 

我沒有測試這一點,但我認爲這將是做工精細你。

更多nextUntil()看到here

+0

作品完美! – Nonyck 2012-08-16 10:29:33

0

也許有點像這樣:

$('div:not(.sidebar_project)').click(function() { 
    $(this).nextUntil(':not(.sidebar_project)').toggle(); 
}); 

演示:http://jsfiddle.net/nnnnnn/6gMnr/2/

這假定上面我的意見是正確的,即標題元素穿上」沒有類「項目」和「名稱」,但實際上他們有不同類別的不同項目名稱,因此有必要根據他們的不是擁有「sidebar_project」類。

顯然與此有關的問題是,你可能有頁面上的其他div的,所以我希望在你的問題中所示的div有一些含有對象中,這樣你可以這樣做:

var $container = $("selector for container here"); 
$container.find('div:not(.sidebar_project)').click(function() { 
    $(this).nextUntil(':not(.sidebar_project)').toggle(); 
});