Неверное состояние переключения в jQuery - PullRequest
1 голос
/ 21 июля 2009

Я использую 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 ]

1 голос
/ 21 июля 2009

Вероятно, потому что toggle думает, что object уже виден, и выполняет предложение 'hide'.

редактировать: Эх .. довольно круговая логика; как еще пользователь сможет нажать на нее: -)

PS. Вы изменили логику с is-object-visible? на is-list-visible? в своем собственном ответе.

0 голосов
/ 21 июля 2009

Хорошее выполнение следующих действий

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");
    }
}
0 голосов
/ 21 июля 2009

Не уверен, что это все исправит, но перестану использовать зарезервированные ключевые слова. Измените переменную класса на что-то вроде c. И измените переменную объекта как минимум на obj.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...