我正在开发jQuery Mobile(jQm)应用程序。
我想将taphold事件用于一些关键元素,例如删除按钮,以确保此元素不受不必要的触发器的影响。
我在jQm弹出窗口上创建了Remove按钮并向它添加了一些JS,但是我不能强制退出默认操作,不能使用event.preventDefault()
和event.stopImmediatePropagation()
,也不能使用return false
。
我准备jsFiddle作为我的代码的副本。弹出窗口包含简单的进度条作为holded tap的指示器。您可以在此处尝试: jsFiddle
(注意:HTML5数据标记taphold="true"
不是jQm默认值)
作为一种解决方法,我目前正在使用<a href="#" data-role="button"...></a>
样式的按钮替换<div>
。这很有效,因为它没有任何默认操作,但我很好奇为什么“正确”的解决方案不起作用?
答案 0 :(得分:2)
$("a:jqmData(taphold='true')").bind("vmousedown vmouseup", function(event) {
event.preventDefault();
event.stopImmediatePropagation();
上述代码中使用的event.preventDefault();
和event.stopImmediatePropagation();
,请参阅vmousedown
和vmouseup
事件,而不是每个被绑定的事件选定的元素。
这意味着click
事件的默认行为仍然存在。因此,当您单击“删除”按钮时,将触发单击事件,这就是弹出窗口立即关闭的原因。
我希望这会有所帮助。