2

私はjQueryMobileに問題があります.何時間も答えを探していますが、何も機能しません:(

左または右にスワイプして次または前のアイテムに移動することで、力が得られます。

上記のコードは正常に動作しますが、しばらくすると異常になります。

私は「セクションA」にいて、右にスワイプして「セクションB」に行き、左にスワイプして「A」に戻り、次に右にスワイプして「C」に行き、一度スワイプすると「C」に移動します再び接続するカルーセルです

ページ C から A に移動し、次に B に戻り、C などを返します...そして 10 年の変更の後、ページで停止し、スワイプします。これは、完全にクレイジーなスクロール表示の効果です。

次と前はURLです

htmlで

   <div data-role="page" data-dom-cache="false" class="actus-page" id="news" data-theme="a" data-next="http://wip17.kenjidev.com/n/39409" data-prev="http://wip17.kenjidev.com/n/39423" data-title="La vitalité de la traduction, levier décisif de la diversité éditoriale">

loadpage という行を入れると、この料金には無限の ajax ページがあります (50,000 を超えるアイテムがあります..)

とjs

  $( document ).on( "pageinit", "[data-role='page'].actus-page", function() {
    var page = "#" + $( this ).attr( "id" ),
        next = $( this ).jqmData( "next" ),
        prev = $( this ).jqmData( "prev" );

    if ( next ) {
        //$.mobile.loadPage( next + ".htm" );
        $( document ).on( "swipeleft", page, function() {
            console.log(next +' : ' + page + ' : ' + prev );
            $.mobile.changePage( next  , {transition: "slide"});
        });
    }
    if ( prev ) {
        $( document ).on( "swiperight", page, function() {
            console.log(prev +' : ' + page + ' : ' + next );
            $.mobile.changePage( prev, { transition: "slide" , reverse: true } );
        });
    }
});

手伝ってくれてありがとう


編集:解決

助けてくれてありがとうオマール

最終的にここのコードはすべての問題を解決します:

 $( document ).on( "pageinit", ".actus-page", function() {
var 
    $page = $(this),
    page = "#" + $page.attr( "id" ), 
    next = $page.jqmData( "next" ), 
    prev = $page.jqmData( "prev" ); 

if ( next ) {  
    $page.on( "swipeleft", function() { 
        $.mobile.changePage( next , {transition: "slide"}); 
    }); 
} 

if ( prev ) { 
    $page.on( "swiperight", function() { 
        $.mobile.changePage( prev, { transition: "slide" , reverse: true} ); 
    }); 
}});
4

1 に答える 1

4

各ページに ID がある場合は、次のコードを使用して DOM 内のページ間を動的に移動します。

$(document).on('swipeleft swiperight', function (event) {
 if(event.type == 'swiperight') {
  var prevpage = '#' + $.mobile.activePage.prev('div[data-role="page"]')[0].id;
  $.mobile.changePage(prevpage, {
   transition: 'slide',
   reverse: true
  });
 }

 if(event.type == 'swipeleft') {
  var nextpage = '#' + $.mobile.activePage.next('div[data-role="page"]')[0].id;
  $.mobile.changePage(nextpage, {
   transition: 'slide',
   reverse: false
  });
 }
});
于 2013-04-05T16:02:40.373 に答える