if 语句永远不会到达 else 部分



我正在尝试使用以下代码更改按钮的文本。

// hide unavailable courses
$("#availability_button").click(function () {
    $(".availability_red").toggle();
        if ($(this).val('Show Unavailable')){
            $(this).html('Hide Unavailable');
        } else {
            $(this).html('Show Unavailable');
        }
});

按钮文本在我第一次使用它时会更改,但再也不会更改。不知道为什么会这样,我已经达到了我的JS调试知识的极限。

我向它发出警报,并证明它永远不会到达其他路径。

我做错了什么?

它总是计算为true,因为.val(val)返回jQuery对象和对象是真实的(ToBoolean给出true(值。

此外,您正在使用.val()而您可能想要检查.html()

试试这个:

if ($(this).html() === 'Show Unavailable') {
    $(this).html('Hide Unavailable');
} else {
    $(this).html('Show Unavailable');
}

演示 http://jsfiddle.net/jfetf/

$(this).val("Show Unavailable")设置值并返回对象,它不是检查相等性。

请尝试$(this).val() == "Show Unavailable"。它将获取当前值并将其与字符串进行比较。

$(this).val('Show Unavailable')返回jQuery object,解释为true

另外 $(this(.val('Show Unavailable'( 将值设置为 element...

最新更新