2012-06-27 46 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上绑定您的处理程序。

相关问题