Если заявление с использованием jQuery .hasClass не будет работать должным образом - PullRequest
1 голос
/ 04 сентября 2011

Я пытаюсь делать разные вещи, когда элемент #box скрыт или видим, поэтому я создал этот скрипт и прикрепил его к параметру onClick кнопки показать / скрыть:

var box = null;

function showHide_Click() {
    box = $("#postBox").hasClass("hidden");

    if (box = true) {
        showBox();
        $("#postBox").removeClass("hidden");
    } else {
        hideBox();
    }
}

Это работает для показа элемента, но обратное не будет работать. Что не так?

Ответы [ 4 ]

5 голосов
/ 04 сентября 2011

Используйте

box === true

или

if(box)

вместо

box = true
2 голосов
/ 04 сентября 2011

Проверьте ваше заявление if. Вам нужно либо двойное равенство, либо удалить его целиком, чтобы просто сказать

if (box)
2 голосов
/ 04 сентября 2011

box = true присваивает true значение box, затем if s результат (true)

Вы можете просто написать if (box), так как это уже логическое значение.

Если бы это не было логическим значением, вы бы написали

if (x === y)
1 голос
/ 04 сентября 2011

Глядя на ваш пример, я бы предложил вам использовать метод jQuery slideToggle , который альтернативно показывает / скрывает.Попробуйте это

function showHide_Click() {
    $("#postBox").slideToggle();
    $("#box").slideToggle();
}

К вашему сведению ... Проблема в вашем коде была box = true, которая не оценивает какую-либо условную проверку, но присваивает true переменной box.

...