1

Router の関数を使用して、テンプレートから作成されたページを動的に読み込みます (いくつかのチュートリアルで見られるように)。

    changePage: function(page) { // page is a View object
        $(page.el).attr('data-role', 'page');
        page.render();
        $('body').append($(page.el));
        var transition = $.mobile.defaultPageTransition;
        if (this.firstPage) {
            transition = 'none';
            this.firstPage = false;
        }
        $.mobile.changePage($(page.el), {changeHash:false, transition: transition});
    }

問題は、ページに JQ Mobile ナビゲーション バーが含まれている場合、アクティブなアイテムが強調表示されないことです。実際には1ミリ秒のようですが、そうではありません。ナビゲーションバーが「リロード」されているためだと思います。同じアイテムを 2 回クリックすると、2 回目は機能します。

jQuery Mobile と backbone.js でナビゲーション バーを操作できる人はいますか?

4

1 に答える 1

0

私はそれをやった:

var activeTab = null;

$('[data-role=page]').live('pageshow', function (event, ui) { 
    $.each($('[data-role=navbar] ul li').children(), function (i, val) {
        if (typeof activeTab !== "undefined" && activeTab != null && $(val).attr('id') == 'navTab' + activeTab)
            $(val).addClass($.mobile.activeBtnClass);
        else
            $(val).removeClass($.mobile.activeBtnClass);
    });
    activeTab = null;
}); 

そして、アクティブなタブを必要とするルートごとに、たとえば次のようにします。

r_search: function() { // Search page (form)
    activeTab = "Search";
    this.changePage(new SearchView());
},
于 2012-07-10T19:41:36.193 に答える