有人解释为什么$(this).is(":checked")
在使用$("#test").click()
单击复选框时比使用document.getElementById("test").click()
编辑请求的行为 - 谢谢:
编辑2
这让我疯了,但我终于意识到 - 在jQuery的1.5.2版本中,调用change
方法时会触发click()
事件的事件处理程序(如本机js) !在之前的版本中并非如此。
看这里:
http://dl.dropbox.com/u/6996564/jquery_click_test/test-1.4.4.htm ... test-1.5.1.htm ... test-1.5.2.htm
有人可以帮我报告这个错误吗?
答案 0 :(得分:5)
点击事件发生之前值更改,因此它获得旧值。单击的默认处理程序在您的单击事件之后发生并切换值。这就是它获得相反价值的原因。我认为文档点击功能正在做一些奇怪的事情(我不相信它,我会信任jQuery)。
看看这个小提琴:http://jsfiddle.net/ub8Zk/4/
答案 1 :(得分:3)
由于您使用的是复选框输入,因此您需要is(':checked')
而不是is(':selected')
答案 2 :(得分:2)
$('input#someCheckbox').click(function() {
if ($(this).is(':checked')) {
// checked
} else {
// not checked
};
});
答案 3 :(得分:-1)
我没看到你的代码。 click()根据文档绑定鼠标单击事件的处理程序。你也可以写:$('#foo')。bind('click',function(){ 警报('用户点击'foo。“'); }); 如果你想触发使用trigger()函数,如下所示:$('foo')。trigger('click')或document.getElementById('foo')。checked = true;当使用直接的javascript。