我有一系列按钮,class =" flipper",用于切换另一个元素的显示/隐藏和禁用状态。这部分工作没有问题。但是当我尝试切换按钮本身的.text值时,它会在第一次更改,然后处于次要状态并且不会使用。
$.fn.toggleLabel = function () {
return this.each(function () {
var $this = $(this);
console.log($this.text());
if ($this.text('Enter your Own')) {
$this.text('Select from DropDown');
} else {
$this.text('Enter your Own');
}
});
};
$('.flipper').click(function(e){
e.preventDefault();
$(this).nextAll().toggleDisabled();
$(this).toggleLabel();
});
我把console.log放在那里检查$ this.text的状态,果然,每次点击按钮时,.text值都是从DropDown'中选择。
为什么toggleLabel函数中的条件不会捕获它,并将值更改回来?
答案 0 :(得分:1)
您的条件if
没有按照您的想法行事。
它实际上每次都将文本设置为'Enter your Own'
并返回一个始终是真实的jQuery对象。由于它是真实的,所以将始终调用第一个表达式,将其设置为'Select from DropDown'
更改
if ($this.text('Enter your Own'))
要
if ($this.text() === 'Enter your Own'))