0

我已经设置了一个多页 html 文档,当用户在页面的左侧或右侧滑动标签时,页面之间的滑动转换会被触发。标签应该滑动到哪些页面的信息嵌入在每个页面 div 顶部的属性中。

最初的滑动一次可以正常工作,但每次连续的滑动似乎都会增加,因此下一次擦除向上移动两页,接下来是四页,依此类推。据我所知,每个页面都正确调用了 Init 函数一次,但是滑动次数正在成倍增加。

环顾四周,我怀疑答案是在滑动事件触发一次时解除绑定,并在页面转换完成后重新绑定它,但我一生无法弄清楚如何......我是新手无论如何,所以一个简单的解释会很棒!

这是相关的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 中,而不是整个 Head 中,以便让它们在每个新页面上重新加载初始化脚本)。

这是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());
                });
}

我尝试添加注释掉的行来关闭绑定,但似乎所做的只是让整个事情停下来。任何想法都非常感谢!贾尔斯

4

1 回答 1

0

您不需要在每个pageShow.

于 2012-06-27T14:34:47.467 回答