看下面的jsfiddle:http: //jsfiddle.net/RA3GS/4/
如果您手动选中复选框,您会看到它们在选中时表示已选中并保持选中状态。但是,如果您按下测试按钮,您会看到它们要么说它们已检查,然后变为未选中,要么说它们未检查,然后说它们已检查。
这是问题所在:如果我选择不事先设置选中的值,则最后会正确选中复选框,但单击的函数错误地声明它未选中。如果我确实设置了选中的值,那么 click() 函数正确地指出复选框已选中,但随后一些其他事件(取消)有助于在最后取消选中复选框。
jsfiddle 是一个测试;在我的实际实现中,我将无法控制输入元素上的 click() 函数,因此这不仅仅是更改 click 函数中的登录名的问题。
这正是我想要的行为:
- 你点击按钮。
- 任何 click() 函数都会被触发并相信要检查的元素。
- 所有其他事件都认为该复选框被选中。
- 当一切都说完了,复选框仍然被选中。
更简单的例子
我在这里放了一个更简单的 jsfiddle:http: //jsfiddle.net/49jUL/
在不更改status
功能的情况下,无论您选中哪个复选框,我都希望控制台显示相同。当前输出为:
点击手册
A tester received the following event change
Value: 100 Checked: true
A tester received the following event click
Value: 100 Checked: true
点击控制器
A tester received the following event click
Value: 100 Checked: true
A tester received the following event change
Value: 100 Checked: false
我发现有趣的是,如果我单击手动单选按钮,change
首先调用然后 click
调用,而如果我触发单击,click
调用然后 change
调用。
请注意,当我尝试调用它时,$target.change().click()
它只是调用change
, then click
,然后 finallychange
再次checked
设置为 false。