Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript复选框已选中,并存在触发器问题_Javascript_Jquery - Fatal编程技术网

Javascript复选框已选中,并存在触发器问题

Javascript复选框已选中,并存在触发器问题,javascript,jquery,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');

在我的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');
});
此代码在else中为我提供了


我不明白为什么,这个编辑的解决方案是什么:这个答案似乎只适用于1.9之前的版本,当“bug”出现时

这个问题也给我留下了深刻的印象。原因是,当您实际使用鼠标单击复选框时,将首先设置其状态,然后执行其单击处理程序。如果使用jQuery触发单击,则首先执行单击处理程序,然后设置状态

一种解决方案是触发本机javascript点击处理程序,如下所示:
复选框[0]。点击()
,其作用与jQuery的
相同。点击()
/
。触发('click')
,但顺序正确

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


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

这可能是jquery库的问题。或浏览器问题。这对我来说很好。您可以使用1.8以上的最新jquery


点击查看答案

它可以从我这里正常工作!!检查此@ekans它不适用于jquery 1.8.3请检查此链接@RahulVarma您也请检查此链接。虽然这在较新的图书馆有效谢谢我工作过,解释这是一种很好的方式。非常感谢@Peter HerdenborgGlad我能帮上忙!但我看到其他人声称它无论如何都应该有效。也许他们是对的,我的知识已经过时了。您可以尝试升级jQuery。我的jQuery版本是1.8.3,但它无法使用。感谢您的检查。他们的bug报告页面有点难以解释。我不确定从现在起我从哪里得到了1.7,但我认为它是在1.9中固定的(正如Explore-X在他的回答中所建议的)。我已经更新了我的答案。