2012-01-04 47 views
2

我在ul >li中顯示來自數據庫的組的名稱,它的參數是<div>,它最初是隱藏的。現在使用jQuery我只想切換<div>,但同一時間想隱藏所有其他人。深入查詢選擇器

我試過下面的代碼,但它在jQuery 1.7中不起作用。任何人可以幫助我如何使用.not.filter,同時選擇所有以「組」或其他解決方案開始的所有div?

$("#popupContact").delegate("ul.horizontal_lists li a", "click", function() { 
    var target_id = $(this).attr('id'); 
    target_id = "divOf" + target_id; 
    $('#' + target_id).slideToggle("slow"); 
    $('[id^="divOf"]'.not(this)).hide(); 
} 
+0

如果可能的話,請做一個小提琴,http://jsfiddle.net – Diode 2012-01-04 05:03:34

回答

1

我覺得你的主要問題之一是,你的搜索div的,但是除外this。由於this是錨,我不認爲這會永遠工作

$('[id^="divOf"]'.not(this)).hide(); 

我認爲你在尋找這樣的事情:

var target_id = $(this).attr('id'); 
target_id = "divOf" + target_id; 
$('#' + target_id).slideToggle("slow"); 
$('div[id^="divOf"]:not("#' + target_id + '")').hide(); 

最後一行將選擇具有所有div ID開始divOf,而不是一個與target_id一個ID,並隱藏他們

0

你也應該開始使用ondelegate一直在jQuery的1.7 deprecated

$("#popupContact").on("click", "ul.horizontal_lists li a", function() { 
    var target_id = $(this).attr('id'); 
    target_elem = $("#divOf" + target_id); 
    $('[id^="divOf"]').not(target_elem).hide(); 
    target_elem.slideToggle("slow"); 
} 
+0

注意,對於'。對參數()'是不是在相同的順序爲'.delegate()'(事件(s)參數先來)。 – nnnnnn 2012-01-04 06:09:32

+0

謝謝你..我錯過了改變.. – 2012-01-04 06:32:53