对于iCheck插件,有没有办法避免" ifChanged"从Javascript设置复选框时要启动的事件处理程序?
答案 0 :(得分:6)
旧问题,但我发现更好的方法是检查event.target.checked
属性,只有在返回true时才运行代码。 iCheck会激活ifChanged
两次 - 首先是未选中的选项,然后是已选中的选项。因此,如果您只运行代码event.target.checked === true
,您将获得您所追求的结果。
答案 1 :(得分:2)
你可以创建一个变量 ignoreChange ,当订阅事件处理程序时,检查该变量是否为 true ,如果是,则将其设置为 false 并停止该功能。如果它不是 true ,那么您可以执行正常的代码。
JS代码:
var ignoreChange = false;
$('input').on('ifChanged', function(event){
if (ignoreChange) {
ignoreChange = false;
return;
}
// do stuff
});
// When changing the checkbox
ignoreChange = true;
基本上,每当您将变量 ignoreChange 设置为true时,都会忽略下一个事件调用。这是一个非常糟糕的解决方法,无论多么必要,因为我没有找到通过iCheck库解决问题的方法。