我正在尝试使用三元运算符切换按钮文本,但它无法正常工作。
<button type="button" id="ter" >Bar</button>
$("#ter").click(function(){
$(this).text() = 'Bar' ? 'column':'Bar';
});
如果可以通过这种方式做到,请告诉我吗?我做错了什么?谢谢。我知道有很多其他方法可以实现这一目标,但我只需要知道这种方法是否可行?感谢
答案 0 :(得分:4)
你也可以试试这个:
$("#ter").click(function(){
var newText = ($(this).text() == 'Bar') ? 'column':'Bar';
$(this).text(newText);
});
检查当前文本是否等于带有$(this).text() == 'Bar'
的'Bar'。如果是,则将变量newText设置为“column”(反之亦然)。第二行用新文本替换旧文本。
答案 1 :(得分:4)
您使用的是三元运算符错误。它是:
[statement] ? [code when true] : [code when false]
你现在基本上正在测试if('Bar')
,它总会返回true。
答案 2 :(得分:3)
你做错了,你可以改用这种方法:
$("#ter").click(function(){
$(this).text(function (i, t) {
return t === 'Bar' ? 'column':'Bar';
});
});
它没有工作的原因是:
$(this).text()
(使用=
)而不是比较(==
或{{ 1}})和重要的是要注意,使用jQuery时,===
方法(以及大多数其他方法)在没有参数的情况下调用时是 getter (它获取当前值),但是要将它用作 setter ,您必须直接(text()
)或使用匿名函数($(this).text('foo')
)传递参数。调用getter并比较检索到的值(或尝试分配它)并不能作为setter。
在jQuery方法可用的匿名函数中,第一个参数(此处称为$(this).text(function(){ return 'foo'; })
,但名称无关紧要,它始终是第一个参数)是当前&#39;的索引。 i
&#39; jQuery返回的集合中的对象,第二个参数(此处称为$(this)
,但名称无关紧要)表示方法找到的当前(预操作)值。
参考文献: