11

私は自分のPHPサイトでPJAXを動作させようとしていました。これは、私が使用しているコードです。

<script src="js/jquery.js"></script> 
<script src="js/jquery.pjax.js"></script>
    <script type="text/javascript">
        $(function(){
            // pjax
            $('ul a').pjax('section')
        })
    </script>

PJAXデモページで使用したコードを使用していますが、使用したコンテナ(#main)を自分のサイトのコンテナ(セクションタグ)に置き換えています。コンソールにもページにもエラーはありませんが、どちらも機能しません。使用する前に

$(function() { $('ul a').pjax('section') });

$('document').ready(function(){
   $('ul a').pjax('section')
});

しかし、これらのいずれも使用せず、$('ul a')。pjax('section')を使用すると、コンソールに次のエラーが表示されます。

jquery.pjax.jsのセクションのpjaxコンテナが見つかりませんでした(行:353)

これについて助けてもらえますか?ありがとう

4

1 に答える 1

10

デフォルトでは、pjaxは、新しいページがchrome(コンテナのinnerHTMLとして使用されるHTMLスニペット)なしで配信されることを想定しています。

あなたの例では、コンテナは私が推測する最初の<section>タグになります。pjaxがセレクターに一致する最初の要素を使用することを保証するかどうかはわかりません。一致するすべての要素を置き換えるだけかもしれません。おそらく、などのIDセレクターを使用する方がよいでしょう#main

とにかく、HTMLスニペットではなく、ページ全体を配信しているようです。これはpjaxの目的をほぼ無効にしますが、ダウンロードしたコンテンツにフラグメントを指定することでサポートできます。ほとんどの場合、これは置き換えられるコンテナに一致するセレクターになります。

したがって、コンテナを使用すると仮定すると、@id=mainpjaxを次のように呼び出すことができます。

$(function() { $("ul a").pjax("#main", { fragment: "#main" }); });

ドキュメントのロード後にpjaxが呼び出されることを確認してください。呼び出されない場合、コンテナのルックアップは失敗します。

ちなみに、pushStateアシストナビゲーションに切り替える簡単な方法は、私のHTMLDecorプロジェクトを使用することです。HTMLページの生成に関する見方を変える必要がありますが、それが終わったら、HTMLDecor.jsスクリプトをページに追加するだけで、必要に応じてpushStateが自動的に使用されます。構成は必要ありません。

于 2012-04-05T12:29:51.040 に答える