Javascript复选框已选中触发器问题

Javascript check box is checked issue with trigger

本文关键字:触发器 问题 复选框 Javascript      更新时间:2023-09-26

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

我不明白为什么以及这个的解决方案是什么

EDIT:这个答案似乎只适用于1.9之前的版本,当"bug"似乎已经修复时。

我也被这个问题所困扰。原因是,当您实际用鼠标单击复选框时,它的状态将首先设置,然后执行其单击处理程序。如果使用jQuery触发单击,则首先执行单击处理程序,然后设置状态。

一种解决方案是触发本地javascript点击处理程序,如下所示:checkbox[0].click(),它的操作与jQuery的.click()/.trigger('click')相同,但顺序正确。

另一种是执行checkbox.attr('checked', true).triggerHandler('click'),其中首先设置状态,triggerHandler()只执行处理程序,而不执行默认行为(选中该框)。

这两种解决方案都应该允许您的代码工作,无论点击是真实的还是触发的。

这可能是您的jquery库问题。或浏览器问题。它对我来说运行良好。你可以看到1.8以上的最新jquery。

click to view answerhttp://jsfiddle.net/dy4uzn51/2/