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

时间:2012-08-01 17:11:11

标签: javascript jquery

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

// 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调试知识的极限。

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

我做错了什么?

3 个答案:

答案 0 :(得分:4)

它总是评估为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/

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

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

另外$(this).val('显示不可用')将值设置为元素...