一尘不染

复选框更改和单击事件之间的jQuery区别

javascript

如标题所示,我想知道checkbox changeclick事件之间的区别(在jQuery中)

我已经读完了答案,复选框上的.click和.change有什么区别

但是,它对我不起作用。change即使我在不​​失去焦点的情况下射击也会触发。

两者似乎都在工作。我在这里想念什么吗?


阅读 447

收藏
2020-05-01

共1个答案

一尘不染

根据W3C,该onclick事件是由键盘出于可访问性目的触发的:

为了给不使用鼠标的用户提供更好的用户体验,已经开发了浏览器来触发onclick事件,即使使用键盘进行 单击 也是如此。

因此,click即使使用键盘的空格键单击了复选框,jQuery的事件也会触发。change,显然,每次复选框状态更改时都会触发。

复选框恰好是changeclick可互换的特殊情况,因为您不能在change没有触发的情况下触发事件click

当然,此规则的例外情况是您是否要使用javascript手动更改复选框,例如:

/* this would check the checkbox without firing either 'change' or 'click' */
$('#someCheckbox').prop('checked',true);

/* this would fire 'change', but not 'click'. Note, however, that this
   does not change the checkbox, as 'change()' is only the function that
   is fired when the checkbox changes, it is not the function that
   does the changing  */
$('#someCheckbox').trigger('change');

/* this would fire 'click', which by default change state of checkbox and automatically triggers 'change' */
$('#someCheckbox').trigger('click');

希望这可以帮助。

2020-05-01