2016-10-07 7 views
0

jqueryモバイルアプリがあります。ページがいくつかあります。最初のページはログインページです。ユーザーがログインした後は、ユーザーが再度ログインページに戻ることを嫌います。jquery mobile toPage select属性が機能しない

ログイン後、#divという名前の#mapが表示されます。私は再びログインページに移動するには、前のページをクリックすると、私はこのエラーを取得

$(document).on('pagecontainerbeforechange', function (e, ui) { 

    var activePage = $(':mobile-pagecontainer').pagecontainer('getActivePage'); 

    if(activePage.attr('id') === 'map') { 

     var test = ui.toPage; 

     console.log(test.attr('id'); 

     // if(test.attr('id') === 'login' && login.status === true) { 
     // console.log('you are alrady logged in'); 
     // e.preventDefault(); 
     // e.stopPropagation(); 
     // } 
    } 
}); 

:間違って何Uncaught TypeError: test.attr is not a function

とどのように私が選択することができ、これを防ぐために

は、次のコードを持っていますattrテストのID

+0

toPage API Doc:このプロパティは、発信者がアクティブにしたいページを表します。これは、ページDOM要素を含むjQueryコレクションオブジェクト、または内部または外部ページへの絶対/相対URLのいずれかです。この値は、最初の引数とイベントをトリガしたchangePage()呼び出しを正確に照合します。 Console.log ui.toPageはそれが何であるかを見るために... – ezanker

+0

こんにちは、この$( '#login')のようにjqueryオブジェクトを選択します。 test.attr( 'id')はエラーです。 – Julez

答えて

1

時々、ui.toPageは文字列であり、時にはページを表すjQueryオブジェクトです。時には、pagecontainerbeforechangeが2回、文字列で1回、オブジェクトで1回実行されます。また、.ATTR( "ID")は動作しますが、jQueryの新しいバージョンでは、( "ID")を.prop使用するのがより正確である

$(document).on("pagecontainerbeforechange", function(e, ui) { 
    var from = ui.prevPage ? ui.prevPage.prop("id") : ''; 
    var to = ''; 
    if (typeof ui.toPage === 'string') { 
     var u = $.mobile.path.parseUrl(ui.toPage); 
     to = u.hash || '#' + u.pathname.substring(1); 
    } else { 
     to = '#' + ui.toPage.prop("id"); 
    } 

    if (from === 'map' && to === '#login') { 
     alert('Cannot change to login from map'); 
     e.preventDefault(); 
      // remove active class on button 
      // otherwise button would remain highlighted 
     $.mobile.activePage 
       .find('.ui-btn-active') 
       .removeClass('ui-btn-active'); 
    }     
}); 

DEMO

:これを試してみてください。 http://api.jquery.com/prop/

+0

こんにちは、これはうまくいくようですが、ブラウザの戻るボタンを2回クリックするとページがリロードされ、すべてのAjaxデータが消えてしまいます。何か案が ? – Julez

関連する問題