Javascript jQuery keyup=而不是==
我使用jQuery用Javascript编写了一个函数,它按照我想要的方式工作。问题是,我输入了一个拼写错误,并使用赋值运算符而不是==或==。出于某种原因,赋值运算符可以工作,而检查等式==则不行。下面的函数可以工作,但似乎不应该。我指的部分是event.type='keyup'。你知道为什么吗Javascript jQuery keyup=而不是==,javascript,jquery,Javascript,Jquery,我使用jQuery用Javascript编写了一个函数,它按照我想要的方式工作。问题是,我输入了一个拼写错误,并使用赋值运算符而不是==或==。出于某种原因,赋值运算符可以工作,而检查等式==则不行。下面的函数可以工作,但似乎不应该。我指的部分是event.type='keyup'。你知道为什么吗 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class = "box" id = "box1">
<input class = "ti" id = "t1" type="text" placeholder= "Enter to do" >
</div>
<script>
$( ".ti" ).on( "keydown", function( event ) {
$( "#log" ).html( event.type + ": " + event.which );
if (event.type = 'keyup' && event.which == '13') {
alert('here');
}
});</script>
$(“.ti”)。在(“按键向下”,函数(事件){
$(“#log”).html(event.type+”:“+event.which);
if(event.type='keyup'&&event.which=='13'){
警报(“此处”);
}
});
这是因为event.type='keyup'
返回keyup
,非空字符串是JavaScript中的真实值
编辑:我错过了
&&
操作符及其在表达式中的作用,可能是因为我关注了JavaScript中非空字符串的真实性,这仍然与所发生的事情有关。所以这个答案在你的情况下并不完全正确。由于Kay发布了一个正确的答案,我不会更新这个答案。在JavaScript中,逻辑AND(&&
)的优先级高于赋值(=
,+=
,…),即a=b和&c
被解析为a=(b和&c)
因此,条件
event.type='keyup'&&event.which='13'
被解析为event.type=('keyup'&&(event.which='13'))
。JavaScript中有一个非空字符串,因此该表达式可以简化为event.type=(event.which=='13')
。请注意,字符串“keyup”已从表达式中删除。现在赋值计算为赋值,即事件。根据事件的值,type
会被true或false覆盖。这取决于事件的值。哪个,这个比较决定条件是否为true。除非这里我错了,否则赋值几乎总是等于true。如果你想知道为什么平等不起作用,那么记录event.type
的实际内容。它被解析为event.type=('keyup'&&&(event.which='13'))
,可以简化为event.type=(event.which='13')
。