Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery复选框的更改和单击事件之间的差异_Javascript_Jquery_Checkbox_Onchange - Fatal编程技术网

Javascript jQuery复选框的更改和单击事件之间的差异

Javascript jQuery复选框的更改和单击事件之间的差异,javascript,jquery,checkbox,onchange,Javascript,Jquery,Checkbox,Onchange,正如标题所示,我想知道change和click事件复选框(在jQuery中)之间的区别 我已经把这个问题的答案读了下来 但是,这对我不起作用更改即使我在不失去焦点的情况下点击空格也会触发 这里有一个 两者似乎都在起作用。我在这里遗漏了什么吗?我猜当复选框更改时会触发更改(即使您没有单击它)。例如,如果您通过其他功能更改复选框的状态 您可以使用键盘(选项卡和空格键)在不单击的情况下选中或取消选中复选框。这将转到更改语句,而不是单击。IMHO请让我知道如果这没有帮助,我将删除我的帖子: Change

正如标题所示,我想知道
change
click
事件复选框(在jQuery中)之间的区别

我已经把这个问题的答案读了下来

但是,这对我不起作用<代码>更改即使我在不失去焦点的情况下点击空格也会触发

这里有一个


两者似乎都在起作用。我在这里遗漏了什么吗?

我猜当复选框更改时会触发更改(即使您没有单击它)。例如,如果您通过其他功能更改复选框的状态

您可以使用键盘(选项卡和空格键)在不单击的情况下选中或取消选中复选框。这将转到更改语句,而不是单击。IMHO

请让我知道如果这没有帮助,我将删除我的帖子:

Change
:-如果元素的
状态发生更改,即未单击但已更改,则我估计会触发更改事件复选框具有选中和未选中状态

单击
:单击事件是指当您单击元素时,无论复选框的状态如何

就像伪代码一样

if checkbox state is checked

    alert(Hulk is awesome);

if checkbox is click every time

    alert(Ironman is alright);

我所经历的不同是:

var $check = $(':checkbox');
$checkbox.checked = true;
$checkbox.click( function() {
    alert(this.checked); // true
}).change( function() {
    alert(this.checked); // false
});

因此,通过单击,状态尚未更改,通过更改…

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

为了给那些不使用鼠标的用户提供更好的用户体验,开发了浏览器,即使用键盘点击,也会触发
onclick
事件

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

该复选框恰好是一种特殊情况,其中
change
click
是可交换的,因为如果不触发
click
,则无法触发
change
事件

当然,此规则的例外情况是,如果要使用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');
以下是这些不同行动的演示:


希望这能有所帮助。

当复选框状态发生更改时,无论发生什么情况,都会触发更改事件。当复选框处于焦点或触发更改事件时,按空格键,或仅当我们通过鼠标单击复选框但在单击“如果”之前,单击“在何处作为单击事件”时,才会触发更改事件已指定更改事件,然后它也会运行,然后执行单击事件


在这里,您可以看到已在箱子上执行了清除脚本:

主要区别:当您首先单击/点击聚焦复选框上的空格时,
单击事件将被触发,没有任何更改。此时,您仍然可以阻止默认操作(使用
event.preventDefault()
),该操作将切换该复选框的
选中状态,并触发
更改
事件(没有默认操作)



在某些浏览器中,更改事件只有在第一次
模糊后才会触发,
单击后

似乎是您自己回答了问题。
单击
意味着与任何其他元素一样单击复选框,
change
表示复选框的值已更改。但每次单击都会更改该值。那么有什么区别呢?只要复选框的值改变,就会触发更改。。。这可以在-1发生。点击鼠标2。使用键盘更改其值3。以编程方式更改值。。。但单击事件仅在您使用鼠标单击或模拟鼠标单击时触发programatically@Jashwant首先想到的是这个
change
事件即使使用mousei也会触发。我的意思是,即使不单击鼠标也要更改激发。
单击
不单击鼠标也会激发事件:),但在
复选框
中,状态将在每次单击时更改。你能指出他们工作的不同环境吗<代码>更改
是状态发生更改时,其中是
单击
简单单击事件。i、 e.状态发生变化(选中/未选中);当用户单击时会触发as click,让我知道这是否有意义,@Jashwant lol bro您正在绑定
单击带有切换的
事件,然后
解除绑定
为什么<代码>:)
==>
.unbind('click').bind('change',cb)
.unbind('change')。bind('click',cb)
Bazinga?我正在绑定/解除绑定
单击
更改
事件上的
复选框
上的每个
单击
按钮
。这有什么不对吗?Hiya@Jashwant不确定这样做会取得什么效果,这就是我的意思,不管怎样,我都快迟到了,所以我要睡觉了,放松点,干杯
:)
点击不会通过键盘触发应该是不言自明的,这是一个很好的观点。但是它似乎失败了
复选框恰好是一种特殊情况,在这种情况下,更改和单击是可交换的,因为如果不触发单击,就无法触发更改事件
我只需要这样一个简单明了的词。我会等一会儿。如果没有人反对你的话,你就会得到赏金。@pozs,也会有很大的不同。但是你应该得到一笔奖励,因为你把所有的东西都加起来了,你还应该得到一个w3c链接,用于键盘
onclick
。如果您使用的是IE10/11,如果复选框处于不确定状态(即使您单击它),则不会由于错误而触发“更改”事件。请参阅错误“单击”事件将可靠地触发,但答案中的这一部分“复选框恰好是更改和单击可交换的特殊情况,因为您无法在不触发单击的情况下触发更改事件。”对大多数情况都是正确的