2017-06-16 57 views
0

我有一个表单元素,我想在单击事件中切换1和0之间的值。jQuery - el.val(!e.val())返回false

我知道我可以存储此值并对其进行测试,以确定该字段的新值。

虽然我的问题是,为什么下面的工作没有?

$('#myEl').val(!$('#myEl').val()); 
+0

你能张贴代码的休息吗? – BravoZulu

回答

3

val()返回一个字符串,!返回一个布尔值,它被转换为字符串(由val(...))变成“false”。

相反转换的串号和布尔值数,使用一元+两次:

$("#toggle").click(function() { 
 
    $('#myEl').val(+!+$('#myEl').val()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="myEl" value="1"> 
 
<button id="toggle">Toggle</button>

0

因为#myEl有一个值,通过做$('#myEl').val(!$('#myEl').val());您将#myEl设置为false。