【问题标题】:Checkbox onChange() event triggered twice only on Android(Gingerbread 2.3)复选框 onChange() 事件仅在 Android 上触发两次(Gingerbread 2.3)
【发布时间】:2013-09-25 20:13:12
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 尝试 .off('change').on('change', function ().... 编辑:也将这个 self.elements.selectAll.change(function () { 替换为 .on('change') 就像在检查取消检查代码一样。

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


【解决方案1】:

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

var lockCheck = false;

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多