jQuery Mobile - 按钮上的preventDefault()(链接)

时间:2013-09-07 19:23:09

标签: jquery-mobile button event-handling popup preventdefault

我正在开发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>。这很有效,因为它没有任何默认操作,但我很好奇为什么“正确”的解决方案不起作用?

1 个答案:

答案 0 :(得分:2)

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

上述代码中使用的event.preventDefault();event.stopImmediatePropagation();,请参阅vmousedownvmouseup事件,而不是每个被绑定的事件选定的元素

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

我希望这会有所帮助。