2012-09-06 25 views
0

在我的多頁JQM應用程序我是有射擊事件多次的問題,例如:jQuery Mobile的規定在jQuery的頁面ID(文件)。在(「pageinit」

$("#Button").on("click", function (event) { 

      alert("hello"); 

    }); 

這一次開火第一次,但導航到其他網頁或使用後退按鈕警報彈出窗口的數量增加的訪問鏈接的數量增加後, 我能夠通過使用

event.stopImmediatePropagation(); 

停止這種但這在我的應用程序WTF中造成另一個問題?這是非常令人沮喪的,這是爲什麼在JQM網站上沒有更好的文檔記錄?無論如何。在尋找解決的辦法,我發現這個職位在

http://www.ardeearam.com/blog/2012/06/03/jquery-mobile-events-firing-multiple-times/

它建議「pageinit」事件委託給其中元素被發現的頁ID。即

jQuery(document).on('pageinit', '#page_one', function (event) { 

)}; 

我有,代替具有用於該頁面的每個代碼塊的多個pageinit塊(作爲文章說)以只需設置pageinit頁面ID到第一頁的HTML預感。我試過了,多事件問題消失了。我測試了我的應用程序以確保其他頁面上沒有任何其他頁面(我有6個頁面)被破壞,並且它工作正常。我的問題是:任何人都可以看到使用這種方法pageinit的缺點或問題?

回答

0

發生這種情況是因爲jQuery Mobile一次只能在DOM中保留多個頁面。你必須記住這一點。如果id爲button的元素存在於兩個不同的頁面上,那麼其中一個元素將多次綁定該事件(因爲id必須是唯一的)

委託方法pageinit是推薦的方法。

+0

謝謝,但我沒有在不同的頁面中的相同的ID,它仍然是綁定多次。我的問題是特別詢問是否將pageinit委託給第一頁並在該塊中包含其他頁面的代碼是一種好的做法。 –

+0

我將不得不看到更多的上下文,這只是導致這一結果的一個常見示例。 –