我使用phoneGap(android& ios)打包了我的JQM应用程序。它工作正常,但在某些情况下显示像背景点击/点击事件一样的问题。 即如果我单击弹出窗口中的按钮,则单击将传播到背景按钮。 我怎么能防止这种情况? 目前我已经在弹出窗口后面设置了一个叠加层,并为叠加层设置了一些延迟(我不认为这是一个好方法),但是底部标签栏显示相同的问题,因为叠加层不能放在这里。
答案 0 :(得分:1)
使用event.stopPropagation()来阻止事件冒泡DOM树,防止任何父处理程序被通知事件。
在点击按钮上显示<div>
并将其隐藏在<body>
点击事件
已编辑:
摘自jquery stopPropagation problem with live method
您需要停止并检查传播,因为我们处于同一级别。 .stopPropagation()会阻止冒泡进入任何更高的但是无关紧要,它在DOM中处于同一级别,因此您需要使用.isPropagationStopped()检查它是否已停止。此外,由于处理程序按顺序触发,您需要在其他事件处理程序之后绑定该document.onclick,否则它将先执行,然后其他人尝试停止传播。
答案 1 :(得分: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)。