【问题标题】:Using iCheck - event called twice on mobiles使用 iCheck - 在手机上调用两次的事件
【发布时间】:2015-02-11 12:01:23
【问题描述】:

我的一个 AngularJS 应用程序有一个奇怪的问题。该应用程序使用 iCheck 来设置复选框的样式,问题是:当通过单击其标签选择复选框时,在手机上(或移动模拟器)时,与复选框相关联的事件是开枪两次。

我创建了一个 JSFiddle,您可以在其中自己重现该问题:https://jsfiddle.net/o6oewfff/22/

 <input data-icheck data-ng-model="product.selected" id="{{product.id}}" type="checkbox" data-ng-change="callAnEvent()" />

首先,看看它应该如何工作:

  1. 在浏览器中打开 JSFiddle
  2. 在开发人员工具栏中打开 javascript 控制台
  3. 单击标签选择其中一个复选框,您将在控制台日志中看到三个日志项:应用已调用事件更新

现在,让我们重现我正在尝试解决的问题:

  1. 在移动模拟器中打开 JSFiddle(以 iPhone 6 为例)
  2. 在开发人员工具栏中打开 javascript 控制台
  3. 点击标签选择其中一个复选框,您将在控制台日志中看到五个日志项:应用事件调用更新事件调用更新

截图:http://i.stack.imgur.com/7j03S.png

如您所见,将“事件调用”和“更新”记录到控制台的事件在使用移动设备时会触发两次。此外,未选中该复选框。有谁能够弄清楚为什么会发生这种情况?

谢谢!

【问题讨论】:

  • 它必须(至少部分)与悬停有关。尝试使用labelHover: false 禁用悬停,看看它是否有所作为。在大多数触摸设备上,当有悬停的东西时,第一次点击触发悬停,第二次点击是实际的“点击”。

标签: angularjs events checkbox icheck


【解决方案1】:

试试这个https://jsfiddle.net/scdmuout/

我在下面添加了阻止它在触摸和点击时触发

event.preventDefault();
event.stopPropagation();

【讨论】:

    猜你喜欢
    • 2022-08-20
    • 1970-01-01
    • 2015-08-18
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 2016-04-23
    • 1970-01-01
    相关资源
    最近更新 更多