jquery mobile上页面更改后swiper分页制动

Posted

技术标签:

【中文标题】jquery mobile上页面更改后swiper分页制动【英文标题】:swiper pagination brakes after page change on jquery mobile 【发布时间】:2014-08-26 12:39:21 【问题描述】:

我正在使用iDangerous Swiper 库与Jquery Mobile 框架一起显示移动滑动触摸图库。 它工作正常,除非我离开索引页面(画廊所在的位置)然后回来,分页小部件无法正常工作。它仍然出现(我可以看到项目符号),并且它仍然是可点击的,即如果我“触摸”一个项目符号,画廊会滑动到相应的幻灯片并且项目符号变为“活动”,但它不能以相反的方式工作,在换句话说,它不响应幻灯片更改:如果我在幻灯片中滑动,当前活动的项目符号不会更新。

这是初始化代码:

$( document ).on( "pageshow", "#index-page", function( event ) 

    var mySwiper = new Swiper('.swiper-container',
        pagination: '.pagination',
        paginationClickable: true,
        slidesPerView: 'auto'
    );

);

页面与 jquery mobile 的 data-ajax="true" 属性链接以保留全局范围。

【问题讨论】:

你应该只初始化一次。将.on() 替换为.one() 或者使用pageinit事件,调用一次 解决了这个问题,同时在链接中明确声明了 data-ajax=true 属性,谢谢! 【参考方案1】:

它帮助我分页 swiper idangerous jquery mobile

$(document).one("pageshow", "#page1", function (e) 
        var swiper = new Swiper('.swiper-container', 
        paginationClickable: true,
        hashnav: true,
        pagination: '.swiper-pagination',
        hashnav: true );       
    function reinitSwiper(swiper) 
      setTimeout(function () 
       swiper.reInit();
      , 500);
    
);

【讨论】:

【参考方案2】:

问题: 初始化 swiper 两次。

解决方案: 在“pageshow”事件之外定义一个全局变量“swiper”。第一次加载图库时,全局变量“swiper”将是“未定义的”。当您离开页面并返回时,全局变量“swiper”不会“未定义”。那就不要再初始化了。

<script>
    var swiper;

    $(document).on("pageshow", "#page1", function (e) 
        if (swiper == undefined) 
            swiper = new Swiper('.swiper-container', 
                pagination: '.pagination',
                paginationClickable: true,
                slidesPerView: 'auto'
            ); 
        
    );
</script>

【讨论】:

当你离开页面时,后面有值的 swiper 变量消失了,所以它将是undefined 并再次初始化。尝试使用本地存储以保留页面加载之间的值。

以上是关于jquery mobile上页面更改后swiper分页制动的主要内容,如果未能解决你的问题,请参考以下文章

滑动后 JQuery Mobile changePage() 到同一页面

加载新页面后未呈现文本 - JQuery Mobile

更改设备方向上的图像 jquery-mobile

如何在 jQuery mobile (1.4 beta) 中更改页面?

如何在jquery mobile中更改页面时避免黑屏

jQuery Mobile,表单提交时的页面更改