2009-07-21 11 views
1

jQuery를 사용하여 목록을 표시/숨기고 있지만 목록을 표시하는 데 하나의 링크 대신 두 번의 클릭이 필요합니다. 어떤 도움이 필요합니까?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

했다.

편집 : 어 .. 꽤 순환 논리; 사용자가 클릭 할 수있는 다른 방법 :-)

PS. 당신은 자신의 회신에서 로직을 is-object-visible?에서 is-list-visible?으로 변경했습니다.

+0

올바른 개체는 링크 요소이며 목록 자체는 아닙니다. 이것이 제대로 작동하지 않는 이유 일 수 있습니다. – Derferman

관련 문제