没有被调用就触发了JS函数

时间:2012-06-18 23:00:39

标签: javascript jquery cordova

我有一个使用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
    }
}

1 个答案:

答案 0 :(得分:0)

即将解决的问题。真正的问题是所有触摸事件都被传送到下一页。我之前没有注意到,似乎它像是一个自动点击,但是之前的屏幕触摸事件触发了当前的页面触摸事件。

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

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