2012-06-27 66 views
0

我已經設置了一個多頁html文檔,當用戶在頁面的左側或右側滑動選項卡時,在頁面之間滑動切換。標籤應該刷到哪些頁面的信息嵌入到每個頁面div頂部的屬性中。jquery mobile防止多個處理程序從單個事件觸發

初始刷卡工作正常,但每次連續刷卡似乎都會增加,因此下一張清除卡會向上移動兩頁,接下來的四分之一,依此類推。就我所知,Init函數在每個頁面上都會正確地調用一次,但是swipe正在倍增。

四處閱讀,我懷疑答案是在它觸發一次的時候解除滑動事件,並在頁面過渡完成後重新綁定它,但是我不能爲我的生活弄清楚如何......我這是一個新手,所以一個簡單的解釋會很棒!

下面是相關的HTML:

<div data-role="page" id="intro1" class="page" data-rightTarget= "#intro2" data- 
leftTarget= "#intro1"> 

     <script> 
     $("body").on('pageshow', "#intro1", function() { 
          InitIntroSliders(); 
          }); 
     </script> 
... 

</div><!-- /intro1 --> 

<div data-role="page" id="intro2" class="page" data-rightTarget= "#intro3" data-  
leftTarget= "#intro1"> 

     <script> 
     $("body").on('pageshow', "#intro2", function() { 
         InitIntroSliders(); 
         }); 
     </script> 
... 

</div><!-- /intro2 --> 

...等。(看來我得把腳本在div的每一頁,而不是總負責人,以讓他們重新加載初始化每個新頁面上的腳本)。

而這裏的jQuery的:

function InitIntroSliders(){ 

$(document).on("swipeleft","#righttab", function(){ 
       var rightTarget = $.mobile.activePage.attr("data-rightTarget"); 
       $.mobile.changePage($(rightTarget), {transition: 'slide'}); 
//$(document).off("swipeleft", "#righttab", function()); 
       }); 

$(document).on("swiperight","#lefttab", function(){ 
       var leftTarget = $.mobile.activePage.attr("data-leftTarget"); 
       $.mobile.changePage($(leftTarget), {transition: 'slide', reverse: 
       'true'}); 
//$(document).off("swiperight", "#lefttab", function()); 
       }); 
} 

我試着將在註釋掉的行打開收口,但一切似乎做的是把整個事情逐漸停頓下來。任何想法非常感謝! Giles

回答

0

您無需在每個pageShow上綁定您的處理程序。

相關問題