1

当点击 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");
    }); 

请让我知道是否有人遇到过这个特定问题,或者有任何建议。

谢谢

4

1 回答 1

0

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

var lockCheck = false;

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

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

于 2013-09-25T12:13:12.693 回答