Ben*_*Lee 11 checkbox jquery onclick
更新:这仅适用于jQuery 1.8及更低版本.这是在jQuery 1.9中修复的.
这是我的最小jsfiddle示例:http://jsfiddle.net/8fuEJ/.我正在使用谷歌浏览器,如果这有所作为.
我有一个复选框:
<input type="checkbox" id="wtf">
Run Code Online (Sandbox Code Playgroud)
我有一个jquery事件处理程序:
$('#wtf').click(function(ev) { alert(this.checked); });
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.当我单击复选框时,我首先看到复选标记出现,然后是警告"true"(按此顺序).当我再次点击它时,我看到复选标记消失,然后警告"false".
当我以编程方式触发click事件时出现问题.像这样:
$('#wtf').click(function(ev) { alert(this.checked); });
$('#wtf').click();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,首先我看到警告"false"(复选标记仍然不可见),然后在解除警报后,出现复选标记.
为什么这里的顺序不同?
另请注意,如果我使用事件处理程序change,它会按预期工作.
$('#wtf').change(function(ev) { alert(this.checked); });
$('#wtf').click();
Run Code Online (Sandbox Code Playgroud)
在这里,我看到复选标记出现,然后警告"true".
PCa*_*nde 12
这里有三种类型的操作:
Click()事件首先调用javascript事件.jQuery优先考虑您提供的功能,因为它可以很好地取消该单击或执行其他操作.完成后,javascript会更改复选框的状态.Change()事件通过告诉浏览器单击它来模仿手动点击.这意味着浏览器正在更改项目,然后浏览器会调用您触发的事件.本质上,不同之处在于它Click()是一个简单的javascript调用.它可以做其他人不能做的事情,比如取消改变并做各种其他的东西,所以只要它可以延迟状态的改变.