我已经设置了一个多页 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());
});
}
我尝试添加注释掉的行来关闭绑定,但似乎所做的只是让整个事情停下来。任何想法都非常感谢!贾尔斯