0

我正在为我的 jQuery mobile + Phonegap 应用程序中的所有交互式按钮元素使用 vmouseup 事件处理程序。

例如,检查以下代码。

$('#sBtn').live('vmouseup', function (event) {
  event.preventDefault();
  event.stopImmediatePropagation();
  alert("Inside Function");
})

在这里,发生的情况是,该事件在基于 android 的触摸屏手机中触发了两次(收到两个“内部功能”警报)。如何防止这种情况?或者避免这种情况的最佳方法是什么?

注意:我尝试了 event.preventDefault() 和 event.stopImmediateProbagtion(),但即使我也遇到了同样的问题。谁能简要介绍一下背后发生的事情以及单击该按钮后如何禁用该按钮。

我也试过$('#sBtn').off('vmouseup').on( 'vmouseup', function (event) {})了,但没有运气。任何人都可以建议/建议我该怎么做才能防止这种情况......?

4

1 回答 1

0

嘿,我认为问题在于您正在使用live()

来自 jquery stopImmediatePropagation。

补充说明:

由于.live() 方法在事件传播到文档顶部后处理事件,因此无法停止实时事件的传播。同样,由 .delegate() 处理的事件将传播到它们被委托的元素;在调用委托的事件处理程序时,绑定在 DOM 树中它下面的任何元素上的事件处理程序将已经被执行。因此,这些处理程序可能会阻止委托处理程序通过调用 event.stopPropagation() 或返回 false 来触发。

尝试将其更改为其他内容(bindon),看来您无法按原样停止传播。

于 2013-05-24T09:58:01.967 回答