0

ナビゲーション ツールとして Navbar で jQuery Mobile の Select Menu を使用しようとしています。内部リンクと外部リンクの両方を処理する必要があります。にバインドするchangeと、$.mobile.selectmenu()ウィジェットを使用して、URL と地域ステータスのカスタム データ ビットで構築された選択されたリンクを取得できます。次に、リンクがドキュメントに動的に追加され、.trigger('click')呼び出されます。

http://jsfiddle.net/wZNMz/

バインド イベント、戻り値、イベント伝播ラングリング、および属性の順列に関係なく、外部リンクは機能しません。内部リンクは問題なく機能します。

jquery.mobile.navigation.js ソーストリガークリックを参照すると、[rel='external']デフォルトの URL 処理を有効にするために が一致すると想定どおりに動作するはずです。プラグインは init でタグからリンクを削除することに注意してください。リンクを追加し、変更<option>のクリックをトリガーするというすべてのハックが必要です。<select>

汚い明らかなハックはwindow.location、外部に設定して実行することです。これは機能しますが、なぜそれに頼る必要があるのか​​ わかりません。どんな考えや洞察も大歓迎です!

4

1 に答える 1

0

window.locationリンクを作成してクリックをトリガーすることは、ユーザーを新しいページに転送するために、この特定の理由で存在する を使用するよりもはるかにハックに思えます。内部リンクの場合は、 経由でリクエストをルーティングできます$.mobile.changePage()。次に例を示します。

$('#mobile-nav').bind('change', function(e) {
    var nav_to = $(this).selectmenu('selected');

    if (nav_to.data('locality') === false) {
        //this is external, so use window.location
        window.location = nav_to.data('item-url');
    } else {
        //this is internal, so use $.mobile.changePage()
        $.mobile.changePage(nav_to.data('item-url'), {
            //here you can set options such as transition type and direction
        });
    }
});

のドキュメントは次の$.mobile.changePage()とおりです。 http://jquerymobile.com/demos/1.1.1/docs/api/methods.html

于 2012-08-01T21:46:38.500 に答える