我正在尝试使用以下代码更改按钮的文本。
// 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...