0

我正在开发 jQuery Mobile (jQm) 应用程序。

我想将敲击事件用于一些关键元素,例如remove button,以确保该元素免受不必要的触发。

我在 jQm 弹出窗口上创建了 Remove 按钮并向其添加了一些 JS,但我无法强制退出默认操作,而不是event.preventDefault()and event.stopImmediatePropagation(),也不是return false

我准备了 jsFiddle 作为我的代码的副本。那里的弹出窗口包含简单的进度条作为按住点击的指示器。你可以在这里试试:(注意:HTML5数据标签不是jQm默认的)jsFiddle taphold="true"

作为一种解决方法,我目前正在用<a href="#" data-role="button"...></a>类似<div>按钮的样式替换。这很好用,因为它没有任何默认操作,但我很好奇为什么“正确”的解决方案不起作用?

4

1 回答 1

2
$("a:jqmData(taphold='true')").bind("vmousedown vmouseup", function(event) {
    event.preventDefault();
    event.stopImmediatePropagation();

上面这段代码中使用的event.preventDefault();andevent.stopImmediatePropagation();指的是vmousedownandvmouseup事件,而不是绑定到所选元素的每个事件

这意味着click事件的默认行为仍然存在。因此,当您单击删除按钮时,会触发单击事件,这就是弹出窗口立即关闭的原因。

我希望这有帮助。

于 2013-09-08T00:30:14.340 回答