1

jquery bbq は初めてです。これまでのところ、セットアップのほとんどを理解しましたが、少し問題があります。セットアップはこちら。

右側にメインのナビゲーション リンクがある 1 つのページ 各ナビゲーション リンクをクリックすると、ページの本文コンテンツが対応するデータに変更されます (div の表示と非表示) (bbq を使用) URLにハッシュBを設定します

最初のリンクをクリックします domain.com/dir/#A=page1

2 番目のリンクをクリックします domain.com/dir/#A=page1&B=set1

戻るボタンを押すと、前の A ハッシュに戻りますが、B ハッシュは URL に残ります。

特定のページにないときに B ペラムを削除する方法はありますか?

$(window).bind('hashchange', function(e) {
    var state = $.bbq.getState('p');
    var graphState = $.bbq.getState('n');

    var base_title = '{/literal}{$smarty.const.SITE_TITLE}{literal} | Dashboard | ';
    $('.profile-nav a').each(function() {
        if (!state) {
            $('.profile-nav a').each(function() {
                $('#' + this.id).removeClass('live active');
                document.title = base_title + 'Message Center';
            });
            $('#m').addClass('live active');
        } else if (state == this.id) {
            $('#' + this.id).addClass('live active');
            document.title = base_title + $(this).text();
        } else {
            $('#' + this.id).removeClass('live active');
        }
    });

    if (!state) {
        $('.tab-content').fadeOut('fast');
        $('.message-content').fadeIn('slow');
    } else {
        $('.tab-content').fadeOut('fast');
        clicked = $('#' + state).attr('rel').split(' ')[0];
        $('.' + clicked).fadeIn('slow');
    }

    if (state == 'r') {
        if (graphState) {
            $('.nick-breakdown').fadeOut('fast');
            $('#' + graphState).fadeIn('slow');
            document.title = base_title + 'Reports | ' + $('#' + graphState).attr('rel');
        } else {
            $('.item-breakdown').fadeOut('fast');
            $('.nick-breakdown').fadeIn('slow');
            document.title = base_title + 'Reports';
        }
    }
});​
4

2 に答える 2

5

アンカーに # を設定する代わりに、merge_mode = 2 で jsbbq.pushState を使用して同じことを達成しました。

こちらのドキュメントをご覧ください: http://benalman.com/code/projects/jquery-bbq/docs/files/jquery-ba-bbq-js.html#jQuery.bbq.pushState

merge_mode(Number) : merge_mode が指定されていない場合 (# で始まるハッシュ文字列が指定されている場合を除き、マージ動作のデフォルトは 2 になります)、マージ動作のデフォルトは 0 であり、次のとおりです。

  • 0: params 引数の params は、現在の状態のすべての params をオーバーライドします。
  • 1: 現在の状態のすべてのパラメーターは、params 引数のパラメーターをオーバーライドします。
  • 2: params 引数は現在の状態を完全に置き換えます。

したがって、リンクが次のようになっている場合:

mysite.com#A=page1&B=page2 を呼び出すことができます

$.bbq.pushState({'A' : 'pageXYZ'}, 2);

そして、ドキュメントの場所は次のようになります。

mysite.com#A=pageXYZ

于 2012-07-26T15:52:36.280 に答える