奇怪的jQuery(";checkbox";).click()是(";:checked";)行为

奇怪的jQuery(";checkbox";).click()是(";:checked";)行为,jquery,click,checked,Jquery,Click,Checked,有人能解释为什么用$(“#测试”)单击复选框时,$(this.is(“:checked”)给出的结果与手动或用文档.getElementById(“测试”).click()单击的结果相反吗 在此处编辑请求的行为-谢谢: 编辑2 这让我抓狂,但我终于意识到——在jQuery的1.5.2版中,change事件的事件处理程序在调用click()!!在以前的版本中并非如此 看这里: ... test-1.5.1.htm ... test-1.5.2.htm 有人能帮我报告这个错误吗?因为你使用的是复

有人能解释为什么用
$(“#测试”)单击复选框时,
$(this.is(“:checked”)
给出的结果与手动或用
文档.getElementById(“测试”).click()单击的结果相反吗

在此处编辑请求的行为-谢谢:

编辑2

这让我抓狂,但我终于意识到——在jQuery的1.5.2版中,
change
事件的事件处理程序在调用
click()!!在以前的版本中并非如此

看这里:

... test-1.5.1.htm ... test-1.5.2.htm


有人能帮我报告这个错误吗?

因为你使用的是复选框输入,你想要
是(':checked')
而不是
是(':selected')

点击事件发生在值更改之前,因此它得到的是旧的值。单击的默认处理程序发生在单击事件之后,并切换该值。这就是为什么它会得到相反的值。我认为documentclick函数正在做一些wierd(我不相信它,我相信jQuery)


看看这把小提琴:

我没看到你的代码。click()根据文档将处理程序绑定到鼠标单击事件。你也可以写:$('#foo').bind('click',function(){ 警报('用户单击“foo.”); });
如果要触发,请使用触发器()函数,如:$('foo').trigger('click')或document.getElementById('foo')。checked=true;当使用纯javascript时。

jsfiddle用于编辑乐趣:感谢您向我展示jsfiddle,这太棒了:)此外,click事件发生在值更改之前,因此它得到了旧值,
click
的默认处理程序发生并切换值是的,抱歉,这只是文章中的一个错误。看演示。正如我在下面写的,这怎么可能是实用的?当使用jQuery触发click事件与手动触发click事件时,相同的处理程序具有不同的环境!这是有趣的,但是,它是无用的,只要它是相反的方式时,实际上点击复选框与鼠标!有什么想法吗?在任何情况下,我都需要它在执行单击处理程序时具有相同的值。哦,你实际上更改了我的代码使其工作!谢谢现在我只需要理解
.change()
.click()
在应用于复选框时的真正区别。正如我在第一篇文章的编辑中所写,jQuery 1.5.2中存在一个(假定的)错误,当调用click方法时,会触发更改处理程序……它看起来像
.change()
中的
。click()。change()
是解决这个问题的部分(我刚刚遇到了同样的问题)。这似乎是jQuery中的一个错误。
.bind('click',function(){…})
相当于
。click(function(){..})
。trigger('click')
相当于
。click()
。我不认为这个答案会有帮助。似乎jQuery的开发人员可以/应该将其结合到某种速记中。
$('input#someCheckbox').click(function() {
    if ($(this).is(':checked')) {
        // checked
    } else {
       // not checked
    };
});