避免" ifChanged"通过Javascript设置复选框时的事件处理程序

时间:2014-04-24 09:31:55

标签: javascript jquery icheck

对于iCheck插件,有没有办法避免" ifChanged"从Javascript设置复选框时要启动的事件处理程序?

2 个答案:

答案 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库解决问题的方法。