复选框onChange()事件仅在Android上触发两次(Gingerbread 2.3)

时间:2013-09-25 11:09:21

标签: android jquery jquery-mobile checkbox android-2.3-gingerbread

点击selectAll复选框时,会触发onChange()事件两次。

仅在使用Gingerbread(2.3)的Android设备上发生这种情况。在其他设备和桌面浏览器上,事件仅触发一次。

这是我正在使用的脚本。

    /* Check-Uncheck */
    self.elements.listview.on('change', ':checkbox', function (event) {
      var unchecked = $(':checkbox:not(:checked)', self.elements.listview);
      self.elements.selectAll
        .prop('checked', unchecked.length === 0)
        .checkboxradio("refresh");
    });


    /* Check-Uncheck 'Select All' */    
    self.elements.selectAll.change(function () {
      var checkboxes = $(':checkbox', self.elements.listview);    
      var checked = self.elements.selectAll.is(':checked');
      checkboxes
        .prop('checked', checked)
        .checkboxradio("refresh");
    }); 

如果有人遇到过这个问题,或者有任何建议,请告诉我。

由于

1 个答案:

答案 0 :(得分:0)

好吧,我无法确定问题的根源......也许onclick处理程序不会被覆盖......但是一个简单的解决方法就是锁定变量......

var lockCheck = false;

//in onchange code of both functions:
if(lockCheck){
    lockCheck = false;
    return;
}
lockCheck = true;

[编辑] ......好吧......或奥马尔的建议:)