4

谁能解释为什么$(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

4 回答 4

5

单击事件发生在值更改之前,因此它正在获取值。单击的默认处理程序发生在单击事件之后并切换值。这就是为什么它得到相反的价值。我认为文档单击功能正在做一些奇怪的事情(我不相信它,我会相信 jQuery)。

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

于 2011-04-15T00:12:06.053 回答
3

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

于 2011-04-14T23:32:19.590 回答
2
$('input#someCheckbox').click(function() {
    if ($(this).is(':checked')) {
        // checked
    } else {
       // not checked
    };
});
于 2011-04-15T03:09:21.813 回答
-1

我没有看到你的代码。click() 根据文档将处理程序绑定到鼠标单击事件。你也可以这样写:$('#foo').bind('click', function() { alert('User clicked on "foo."'); }); 如果要触发,请使用 trigger() 函数,如下所示: $('foo').trigger('click') 或 document.getElementById('foo').checked = true; 使用直接 javascript 时。

于 2011-04-15T02:38:30.057 回答