-2

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

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

我在其中设置了一个警报,并证明它永远不会到达 else 路径。

我究竟做错了什么?

4

3 回答 3

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/

于 2012-08-01T17:13:03.437 回答
3

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

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

于 2012-08-01T17:13:17.347 回答
0

$(this).val('Show Unavailable')returnjQuery object被解释为true.

另外 $(this).val('Show Unavailable') 将值设置为元素...

于 2012-08-01T17:14:07.927 回答