我正在尝试使用以下代码更改按钮的文本。
// 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调试知识的极限。
我对它发出警报并证明它永远不会到达其他路径。
我做错了什么?
答案 0 :(得分:4)
它总是评估为true
,因为.val(val)
返回jQuery对象,对象是真实的(ToBoolean
给出true
)值。
此外,您使用的是.val()
,而您可能想查看.html()
试试这个:
if ($(this).html() === 'Show Unavailable') {
$(this).html('Hide Unavailable');
} else {
$(this).html('Show Unavailable');
}
答案 1 :(得分:3)
$(this).val("Show Unavailable")
设置值并返回一个对象,它不检查相等性。
请尝试使用$(this).val() == "Show Unavailable"
。它将获取当前值并将其与字符串进行比较。
答案 2 :(得分:0)
$(this).val('Show Unavailable')
返回jQuery object
,其解释为true
。
另外$(this).val('显示不可用')将值设置为元素...