2012-06-18 78 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,如果有人對這個問題有同樣的看法。

我仍然需要一個具體的解決方案,但我厭倦了調查這個,所以我暫時解決了這個設置一個短暫的延遲來激活監聽器功能。