JQM后台点击问题

时间:2012-07-27 06:03:25

标签: jquery jquery-mobile background click tap

我使用phoneGap(android& ios)打包了我的JQM应用程序。它工作正常,但在某些情况下显示像背景点击/点击事件一样的问题。 即如果我单击弹出窗口中的按钮,则单击将传播到背景按钮。 我怎么能防止这种情况? 目前我已经在弹出窗口后面设置了一个叠加层,并为叠加层设置了一些延迟(我不认为这是一个好方法),但是底部标签栏显示相同的问题,因为叠加层不能放在这里。

2 个答案:

答案 0 :(得分:1)

使用event.stopPropagation()来阻止事件冒泡DOM树,防止任何父处理程序被通知事件。

SEE EXAMPLE FIDDLE

在点击按钮上显示<div>并将其隐藏在<body>点击事件

已编辑:

摘自jquery stopPropagation problem with live method

  • live()处理程序在文档
  • 事件处理程序按照绑定到任何给定的顺序执行 元件

您需要停止并检查传播,因为我们处于同一级别。 .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)。