手动或以编程方式单击时,与prop('checked')不一致

时间:2012-09-24 12:38:07

标签: javascript jquery checkbox

我遇到jQuery 1.7.2/1.8.2(未测试早期版本)的问题,prop('checked')似乎返回了不一致的值。

我有两个未选中的复选框:

<input id="input1" type="checkbox"/>
<input id="input2" type="checkbox"/>​

当我在$('#input1').click()上致电ready时,prop('checked')会给我false。当我在#input2上手动点击时,我得到trueI've created a jsFiddle showing the problem

我希望prop('checked')方法在click事件处理程序内以一致的方式返回数据,无论这是如何触发的,这似乎不是这种情况。

我错过了什么吗?这是一个已知的错误?是否有解决方法可以在.prop('checked')处理程序中包含一致的click数据,无论这是如何触发的?

PS:我已使用FF 15.0.1Chrome 21.0.1180jQuery 1.7.2 and 1.8.2进行了测试。无论我使用.click(还是.on('click'

,问题都是一样的

1 个答案:

答案 0 :(得分:3)

行为不一致的原因是.click()与实际点击元素之间的差异。实际上,单击它会更改checked状态,而.click()仅执行jQuery绑定的处理程序。

因此,单击元素会更改是否选中,然后告诉您新状态,而使用触发机制只会告诉您先前存在的状态。