在jQuery中切换状态不正确

时间:2009-07-21 18:37:12

标签: javascript 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);     
    });
});

3 个答案:

答案 0 :(得分:1)

这可能是因为切换认为object已经可见,并执行'hide'子句。

编辑: 呃......相当循环的逻辑;用户如何能够点击它: - )

PS。您在自己的回复中将逻辑从is-object-visible?更改为is-list-visible?

答案 1 :(得分:0)

不确定这是否会解决所有问题,但会停止使用保留关键字。 将变量类更改为c。并将对象变量更改为至少obj。

答案 2 :(得分:0)

做好以下工作

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");
    }
}