5

当有人点击一个按钮时,它会导致另一个页面出现。为了防止点击向下级联到出现的新页面上的另一个元素,我们使用 preventDefault。我们已经将其视为 StackOverflow 其他地方问题的解决方案。但是,它对我们不起作用。

代码:

// Bind what happens when user taps on app
$( '#templates .app_box' ).on( 'tap', function( ev ) {
    // Get itunes ID
    APP_PICKED = $( this ).attr( 'itunes_id' );

    // If on category page, update category history with new path
    if ( panabee_get_active_page().attr('id') == 'category_page' ) {
        // Get app path and scrub app from it
        var app_path = $(this).attr( 'path' );
        app_path = app_path.substring( 0, app_path.lastIndexOf(PATH_DELIMITER) );

        // Convert path string into array and store in history
        CATEGORY_PICKED_HISTORY = get_path_array( app_path );
    }

    // Show app
    if ( playing_game() ) {
        play_app_game( this );
    } else {
        panabee_change_page( '#app_page' );
    }

    // Prevent double tap
    ev.preventDefault();
});

复制:

1) 从您的 iPhone 访问www.tekiki.com

2) 点击第一个应用程序图标。这会导致应用页面出现。如果您在正确的位置点击,原始点击会触发下载按钮(在应用程序页面上)。

4

4 回答 4

2

您的代码正在阻止事件点击传播。

但是,很可能是其他一些事件导致了触发器(猜测:事件click)。事实上,您的点击甚至不是真正的 DOM 事件,而是由 jQuery Mobile 框架发明的东西,因此与原生 JavaScript 事件相比,它的行为很可能有所不同。

http://api.jquerymobile.com/tap/

尝试绑定点击事件。

于 2013-07-22T21:21:41.733 回答
2

我们的问题是我们使用自定义代码触发了点击事件。我们改用 jQuery Mobile (1.3.2) 解决了这个问题。它很臃肿,但它可以工作并处理所有触摸事件,如点击和滑动。

于 2013-07-30T20:07:27.910 回答
1

谷歌有一个快速按钮,它在移动幽灵点击方面面临着类似的问题。他们最终实现了点击克星

“我们想出处理这些鬼点击的方法称为点击破坏器。我们所做的只是在主体中添加一个点击事件侦听器,在捕获阶段进行侦听。当我们的侦听器被调用时,我们尝试确定是否click 是我们已经处理过的点击的结果,如果是这样,我们就调用 preventDefault 和 stopPropagation 。”

于 2013-07-30T21:09:41.637 回答
0

那么 ev.stopPropagation() 呢?您需要停止冒泡以防止其他元素接收事件。 http://api.jquery.com/event.stopPropagation/

于 2013-07-30T14:34:18.257 回答