jQuery Mobile停止将Taphold传播到父级

时间:2018-10-03 15:42:19

标签: jquery mobile jquery-mobile

我正在构建一个页面,我想在其中使用Taphold启动contextMenu。但是,当元素位于父级内部时,分路点会传播到该父级。我想防止这种情况。

因此,当用户抱住孩子时,仅应启动孩子Taphold函数,而当用户抱住父母时,仅应启动父母。

我尝试了el.stopPropagation()和el.stopImmediatePropagation(),但是两者都没有阻止Taphold向父级传播。

This fiddle将显示问题。抱着绿色的孩子也会触发红色的父母的触摸

小提琴显示两个div:

<div class='parent'>
   <div class='child'></div>
</div>

并使用以下代码:

$('.parent').on('taphold', function( el ){
   alert( 'parent' );
});

$('.child').on('taphold', function( el ){
   alert( 'child' );
});

如果按住绿色div,则红色也会触发,这不是我想要的。

1 个答案:

答案 0 :(得分:1)

嗯,taphold并不像其他事件那么容易,因为要认识到这一点,有必要启动timer来检查经过时间。初始屏幕压力(JQM使用其自己的vmousedown事件)。因此,在经过tapholdThreshold之后(通常为750毫秒),框架可以引发taphold事件。

我相信可以获得完美解决方案您可能需要修补JQM,否则这里是一个快速解决方法:

$('.parent').on('taphold', function( e ) {
    if(e.target == e.currentTarget) {
        // do the action
    }
});

taphold仍将被引发,但是您可以捕获源代码并跳过代码的执行。