使用触发器检查Javascript复选框问题

时间:2014-11-06 09:20:18

标签: javascript jquery

我的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

我不明白为什么以及这个

的解决方案是什么

2 个答案:

答案 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/