我的javascript文件代码是
$( document ).ready(function() {
$("input:checkbox[id^='chkbox_']").on('click',function(){
var chkbox = $(this);
if(chkbox.is(':checked')){
alert('In if');
} else {
alert('In else');
}
});
$("#" + id).trigger('click');
});
此代码为我提供了In else
。
我不明白为什么以及这个
的解决方案是什么答案 0 :(得分:0)
编辑:这个答案似乎只适用于1.9之前的版本,当时“bug”seems to have been fixed。
我也被这个问题打动了。原因是当您使用鼠标实际单击该复选框时,首先设置其状态,然后执行其单击处理程序。如果使用jQuery触发单击,则首先执行单击处理程序,然后再设置状态。
一种解决方案是触发原始的javascript点击处理程序,如下所示:checkbox[0].click()
,它与jQuery的.click()
/ .trigger('click')
完全相同,但顺序正确。
另一个是checkbox.attr('checked', true).triggerHandler('click')
,其中状态首先设置,triggerHandler()
只执行处理程序而不是默认行为(选中复选框)。
无论点击是真实还是触发,两种解决方案都应该允许您的代码正常工作。
答案 1 :(得分:0)
这可能是你的jquery库问题。或浏览器问题。它对我来说很好。你可以在1.8以上的最新jquery。
click to view answer
http://jsfiddle.net/dy4uzn51/2/