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



有谁能解释为什么当点击$("#test").click()复选框时,$(this).is(":checked")给出的结果与手动点击或点击document.getElementById("test").click()时相反吗?

编辑请求的行为在这里-谢谢:

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

编辑2

这已经把我逼疯了,但我终于意识到——在1.5.2版本的jQuery中,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

有人能帮我报告这个bug吗?

点击事件发生在值改变之前,所以它得到的是旧的值。click的默认处理程序发生在单击事件之后,并切换该值。这就是为什么它得到相反的值。我认为文档点击功能做了一些奇怪的事情(我不会相信它,我会相信jQuery)。

看这提琴:http://jsfiddle.net/ub8Zk/4/

由于您使用的是复选框输入,因此您需要is(':checked')而不是is(':selected')

$('input#someCheckbox').click(function() {
    if ($(this).is(':checked')) {
        // checked
    } else {
       // not checked
    };
});

我看不到你的代码。Click()根据文档将处理程序绑定到鼠标单击事件。你也可以这样写:$('#foo')。Bind ('click', function() {alert('用户点击foo. ' ');});如果你想触发,使用trigger()函数如下:$('foo').trigger('click')或document.getElementById('foo')。Checked = true;

最新更新