2011-01-09 17 views
1

ヒストリープラグインの機能を(本当にシンプルな)ajaxコードに追加する方法がわかりません。jQuery ajaxに履歴を追加する

ここでは、これまでに私のコードです:

$(function() { 

    $.ajaxSetup({ cache: true }); 
    var hijax = $('ul.hijax a'); 
    var loader = $('<div id="spinner"></div>'); 
    hijax.click(function(e){ 
     hijax.removeClass('ajax-on'); 
     $(this).addClass('ajax-on'); 
     var url = $(this).attr('href') + ' #biog-container'; 
     $("#ajax-container").html(loader).load(url); 
     e.preventDefault(); 
    }); 
}); 

これは(ザ・の人々へのリンクと名前のリストである「biogコンテナ」のidを持つdiv要素を含むリンク先のページの内容を引っ張りますバイオグラフィー - バロックオーケストラのサイトです!)

ajaxの呼び出しはうまくいきます(yay jQuery!)、私はgoogledして、履歴プラグインと(私がいるばかげたフロントエンドの人)のサポートを追加することについてgoogledと私はちょうどそれを理解できません。

ありがとうございました。

答えて

1

スクリプトを使用してクリックしたアイテムを保持しながら、グローバル配列を作成できます。各クリックで要素を押しますが、最後の項目を表示しても返さない項目です。

戻り点で、配列に複数のアイテムがあるかどうかチェックし、アイテムを1つ引っ張って破棄して(そのアイテムが現在のページを表している)、別のアイテムを引き出してクリックします。

このコードは、テストされていません!:

$(function() { 
    var links = new Array(), 
    hijax = $('ul.hijax a'), 
    loader = $('<div id="spinner"></div>'), 
    container = $('#ajax-container'), 
    content = container.html(); 

    $.ajaxSetup({ cache: true }); 

    hijax.click(function(e){ 
     var $this = $(this), 
     url = $this.attr('href') + ' #biog-container'; 

     e.preventDefault(); 
     links.push($this); 

     hijax.removeClass('ajax-on'); 
     $this.addClass('ajax-on'); 
     container.html(loader).load(url); 
    }); 

    $('#back-button').click(function(e){ 
     var link; 
     e.preventDefault(); 

     if (links.length > 1) { 
      // This represents the current link 
      links.pop(); 
      // This represents the past link 
      link = links.pop(); 
      link.click(); 
     } 
     else { 
      // This may be empty, or represent the current content 
      links.pop(); 
      // Show the original content 
      container.html(content); 
     } 
    }); 
}); 
関連する問題