2012-01-04 10 views
2

データベースのグループ名をul >liに表示しています。最初は隠されていたパラメータは<div>です。今すぐjQueryを使用して、私は<div>のみを切り替えたいが、同じ時間は他のすべてを非表示にしたい。深さのあるJqueryセレクタ

次のコードを試しましたが、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

可能であれば、() '(イベント.on'ためのパラメータは、() '' .delegateと同じ順序ではないことフィドル、http://jsfiddle.net – Diode

答えて

1

私はあなたの主な問題の一つは、あなたがのdivのを探しますが、thisを除くということだと思います。

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

最後の行が持っているすべてのdivを選択:thisはアンカーであるので、私はこれが今まで

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

をうまくいくとは思わない私はあなたがこのような何かを探していると思いますidがdivOfで始まるではなくtarget_idのIDを持つ1、そしてあなたもdelegate以来onを使用して起動する必要があり、それらを

0

を非表示にする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

注意してください(s)パラメータが最初に来る)。 – nnnnnn

+0

ありがとうございました..私はそれを変更することを忘れました.. –