【问题标题】:jQuery Mobile - preventDefault() on button (link)jQuery Mobile - 按钮上的 preventDefault() (链接)
【发布时间】:2013-09-07 19:23:09
【问题描述】:

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

我想对一些关键元素(例如 remove button)使用轻触事件,以确保该元素不会受到不必要的触发。

我在 jQm 弹出窗口上创建了删除按钮并添加了一些 JS,但我无法强制退出默认操作,event.preventDefault()event.stopImmediatePropagation() 以及return false 都没有。

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

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

【问题讨论】:

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


    【解决方案1】:
    $("a:jqmData(taphold='true')").bind("vmousedown vmouseup", function(event) {
        event.preventDefault();
        event.stopImmediatePropagation();
    

    上述代码中使用的event.preventDefault();event.stopImmediatePropagation(); 指的是vmousedownvmouseup 事件而不是绑定到所选元素的每个事件 em>。

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

    我希望这会有所帮助。

    【讨论】:

    • 我知道这会像往常一样简单而愚蠢。基本上我只是在vmousedown vmouseup click 中错过了click。谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 2013-07-15
    相关资源
    最近更新 更多