我已经使用 phoneGap (android & ios) 打包了我的 JQM 应用程序。它工作正常,但在某些情况下会显示背景单击/点击事件等问题。即,如果我单击弹出窗口中的按钮,则单击将传播到背景按钮。我怎样才能防止这种情况?目前我已经在弹出窗口后面设置了一个覆盖,并设置了一些延迟来删除覆盖(我认为这不是一个好方法),但是底部标签栏显示了同样的问题,因为这里不能放置覆盖。
问问题
932 次
2 回答
1
使用event.stopPropagation()防止事件在 DOM 树中冒泡,防止任何父处理程序收到事件通知。
显示<div>
按钮单击并在<body>
单击事件时隐藏它
编辑:
使用 live 方法从 jquery stopPropagation 问题中提取
- live()处理程序在文档上
- 事件处理程序按照它们绑定到任何给定元素的顺序执行
由于我们处于同一级别,因此您需要停止并检查传播。.stopPropagation() 可以防止冒泡变得更高,但这没关系,它在 DOM 中处于同一级别,因此您需要使用 .isPropagationStopped() 检查它是否已停止。此外,由于处理程序按顺序触发,因此您需要在其他事件处理程序之后绑定 document.onclick,否则它将在其他事件处理程序尝试停止传播之前首先执行。
于 2012-07-27T06:09:33.617 回答
1
我找到了一个解决方案,当调用弹出窗口时,将带有可点击元素的事件绑定到一个函数。像这样 :
function callPopupWindow(){
$('#list li a').bind('click',function(e){
e.preventDefault();
//steps to do
e.stopImmediatePropagation();
$('#list li a').unbind('click');//if not unbinded it will trigger one more event with the elements.
});
}
它适用于所有浏览器(iphone、andriod,当然还有 firefox 和 chrome)。
于 2012-07-31T04:35:57.990 回答