奇怪的jQuery(“复选框”).Click()。是(“:checked”)行为

时间:2011-04-14 22:23:21

标签: jquery click checked

有人解释为什么$(this).is(":checked")在使用$("#test").click()单击复选框时比使用document.getElementById("test").click()

单击复选框时给出相反的结果

编辑请求的行为 - 谢谢:

http://jsfiddle.net/ub8Zk/4/

编辑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

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

4 个答案:

答案 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。