javascript - Jquery Mobile "tap"事件错误

标签 javascript jquery-mobile jquery event-propagation

注意***:必须在平板电脑上测试,我只在Ipad上测试过

在同一运动中,1次触摸将触发不同物体的不同事件

http://jsfiddle.net/wR6dK/1/

HTML:

<div id="box1"></div>
<div id="box2"></div>

JS:

$("#box1").on('tap',function(){
    $("#log").append('box1 clicked <br>');
    $(this).fadeOut(0);
});

$("#box2").on('tap',function(){
    $("#log").append('box2 clicked <br>');
    $(this).fadeOut(0);
});

这种情况下,绿色框被隐藏...它可以移动或重新排列 z-index,所有这些都会通过一次触摸触发红色框的事件

是这样的吗? “vclick”和其他事件也会发生这种情况吗?

这是一个错误吗?

最佳答案

这是最古老的 JavaScript 错误之一,从未修复过,因为很长一段时间都不知道。简而言之,JavaScript 从来就不是为了这样使用的,但是给人类一个工具,他会根据需要调整它,因此我们有了像 jQuery 和 jQuery Mobile 这样的框架。

这也称为坠落事件。可以通过以下功能来防止这种情况:

并返回 false。

这是为使用此解决方案而修改的示例:http://jsfiddle.net/Gajotres/wR6dK/5/

$("#box1").on('tap',function(e){
    $("#log").append('box1 clicked <br>');
    $(this).fadeOut(0);
    e.stopPropagation();   
    return false;    
});

$("#box2").on('tap',function(e){
    $("#log").append('box2 clicked <br>');
    $(this).fadeOut(0);
    e.stopPropagation();   
    return false;    
});

让我向您展示另一个示例,以便您在 jQuery Mobile 的情况下了解此问题:http://jsfiddle.net/Gajotres/Xz2np/

$('#page1').live('pagebeforeshow',function(e,data){
    $('.someDiv').live('click', function (e) {   
        alert('Event is not going to propagate to content div, thus not hiding a header');             
        event.stopPropagation();   
        event.stopImmediatePropagation();
    });
});

要理解这个问题,只需单击 DIV 示例,然后注释这两行,再次运行示例,然后再次单击 DIV。我知道 live 在 jQuery 1.9 中已被弃用,但这是我的旧示例。

关于javascript - Jquery Mobile "tap"事件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16069112/

相关文章:

javascript - jQuery .show/.hide 被多次触发

javascript - 无法读取 "undefined"的属性,即使对象已定义! [ react ]

javascript - 单击所有包含 "Follow"的按钮

jquery-mobile - 带有 KnockoutJS ListView 问题的 jQuery Mobile

jQuery ajaxForm 在 div 上的文件拖放上触发文件上传

javascript - 基于宽度计算的表格列显示和隐藏在 Safari IOS 设备中不起作用

javascript - 为相同的 <a> 标签设置不同的超链接(使用 AngularJs)

javascript - 如何防止回调多次触发?

javascript - phonegap使用ajax提交表单数据到mysql然后换页的一些问题

javascript - jquery 移动 + 间隔 : can't stop running in the background