考虑
the following code:
HTML:
<input type='checkBox' /> <div>Click here</div>
JS:
$(function() { $('input').click(function() { document.write($(this).is(':checked') ? "checked" : "unckecked"); }); $('div').click(function() { $('input').click(); }); });
解决方法
因为点击事件不同于更改事件,哪个元素更改.当< div>做一个.click()触发了还没有改变复选框状态的点击事件,所以当它检查它时,它处于上一个状态.
当您直接点击< input>时,您已经更改了状态,即使更改事件按顺序触发第二,主要的点是检查状态已更改的复选框,在点击处理程序检查之前,因此状态是当前状态.
如果您想要准确的状态信息寻找并触发更改事件,则如下所示:
$(function() { $('input').change(function() { $("span").append("<br />" + (this.checked ? "Checked" : "Uncecked")); }); $('div').click(function() { $('input').click().change(); }); });
You can give it a try here,关于机会这不是一个行为问题,你想要一个外部可点击区域this is how I’d do it(通过< label>包装输入).