2012-06-18 41 views
1

我有一个Phonegap应用程序,使用jQuery和jQuery Mobile。JS函数被触发而不被调用

在某些页面中,我已经将一个函数绑定到了一个tap事件,但是该函数在页面加载时被触发。 调试了一下之后(使用arguments.callee.caller.caller.toString())我发现,出于某种疯狂的原因,只有当页面加载时,该按钮才会触发点击事件。

当我更改了页脚的类时,问题消失了(也是我的样式),然后我更改了CSS文件中的类引用以匹配新的页脚类,问题又回来了。这很奇怪,也许它与我的CSS有一些关系。

在我的项目中没有任何其他对"footer_body"的引用。

如果我直接在HTML上设置函数调用(如<span onClick="javascript:obj.leftMethod()">),我有相同的行为。

肯定这是一个Phonegap/Android问题,因为这不会发生在PC浏览器中(除了我必须评论许多只适用于手机的代码)。

下面的代码:

HTML:

<div class="footer_body"> 
    <span class="left"><span>Text 1</span></span> 
    <span class="right"><span>Text 2</span></span> 
</div> 

JS/jQuery的:

function PageClass() { 
... 
    // called when the page is loaded 
    this.init = function() { 
     $(".footer_body", "#page_2").find(".left").unbind("tap").bind("tap", function() { 
      that.leftMethod(); 
     }); 

     $(".footer_body", "#page_2").find(".right").unbind("tap").bind("tap", function() { 
      that.rightMethod(); 
     }); 
     // that is a reference to "this" of the class 
    } 
} 
+1

把'调试器; ''leftMethod()/ rightMethod()'函数中的第一行。在Chrome中打开,当它加载时,按下'Ctrl + Shift + I'它会弹出一个检查器,其中包含一个暂停的脚本标签,您可以在其中获得整个堆栈跟踪(调用者,被调用者,事件等) –

+0

@ GRIGORE-TURBODISEL, m使用Phonegap。 –

+0

没关系。无论如何,请尝试。 –

回答

0

问题接近解决。真正的问题是,所有触摸事件正在进行到下一页。我之前没有注意到,似乎是像自动点击,但是之前触摸当前页面触摸事件的触摸事件。

确定这是一个Android或Phonegap的错误 - 关于它的更多信息here,如果有人对这个问题有同样的看法。

我仍然需要一个具体的解决方案,但我厌倦了调查这个,所以我暂时解决了这个设置一个短暂的延迟来激活监听器功能。