我有一个使用jQuery和jQuery Mobile的Phonegap应用程序。
在某些页面中,我将一个函数绑定到一个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
}
}
答案 0 :(得分:0)
即将解决的问题。真正的问题是所有触摸事件都被传送到下一页。我之前没有注意到,似乎它像是一个自动点击,但是之前的屏幕触摸事件触发了当前的页面触摸事件。
当然这是一个Android或Phonegap错误 - 有关它的更多信息here,如果有人对此问题有同样的看法。
我仍然需要一个具体的解决方案,但我已经厌倦了调查这个,所以我暂时解决了这个设置短暂的延迟来激活监听器功能。