2009-07-21 23 views
1

jQueryを使用してリストを表示/非表示にしていますが、リストを表示するのに1つではなく2つのクリックが必要です。どんな助け?jQueryのトグル状態が正しくありません

jQuery.showList = function(object) { 
    object.toggle(function(){ 
      object.html("▾"); 
      object.siblings("ul.utlist").show("fast"); 
     }, function(){ 
      object.html("▸"); 
      object.siblings("ul.utlist").hide("fast"); 
     }); 
} 

$(document).ready(function() { 

    $("#page").click(function (e){ 
     e.preventDefault(); 
     var target = $(e.target); 
     var class = target.attr("class"); 
     if(class == "list") 
      $.showList(target);  
    }); 
}); 

答えて

0

予約済みのキーワードを使用してすべてを修正するかどうかはわかりません。 変数クラスをcのように変更します。オブジェクト変数を少なくともobjに変更します。次の操作を行って

0

は、トグルがobjectがすでに表示されていると思って、「非表示」句を実行するのでそれはおそらくだうまく

jQuery.showList = function(obj) { 
    var list = obj.siblings("ul.utlist"); 
    if(list.is(":visible")){ 
     obj.html("▸"); 
     list.hide("fast"); 
    } else { 
     obj.html("▾"); 
     list.show("fast"); 
    } 
} 
1

働いていました。

編集: Eh ..かなり循環的なロジックです。どのようにユーザーがそれをクリックできるか:-)

PS。あなたは自分の返信でis-object-visible?からis-list-visible?にロジックを変更しました。

+0

正しいです。渡されたオブジェクトはリンク要素であり、リスト自体ではありません。これは、正常に動作していなかった理由かもしれません。 – Derferman

関連する問題