Cakephp サイトのチュートリアルに従いましたが、ajax を使用したページネーションは一度しか機能しません。コンテンツが更新され、問題ありません。しかし、2回目にページリンクをクリックすると、ページ全体がリロードされます-コンテンツがajaxによって更新されたときに、click()イベントハンドラーが再びバインドされないと思います-理由はわかりません...私はこれを使用しています:
$this->Paginator->options(array(
'update' => '#content',
'evalScripts' => true
));
ソースコードにページをロードすると、次のようになります。
<a href="/final/books/index/page:9/sort:id/direction:asc" id="link-458631432" rel="prev">« Previous</a>
$(document).ready(function (){
$("#link-925538478").bind("click", function (event) {
$.ajax({dataType:"html", success:function (data, textStatus){
$("#content").html(data);}, url:"\/final\/books\/index\/page:10\/sort:id\/direction:desc"});
return false;});
...
たとえば次のページをクリックすると(初めて)、すべてが更新されます(リンクhrefも機能するため)が、スクリプトはリロードされないため、クリックイベントはバインドされず、次のページを再度クリックするとリンクが使用されるだけです。
ページネーション リンクの直後にこれを追加したため、これは奇妙です。
<script>
$(document).ready(function (){
alert('yes');
});
</script>
そして、最初のajaxリフレッシュ後にアラートが表示されます...そして、このことを設定しました. <?php echo $this->Js->writeBuffer(); ?>
最後に...
- - - - - - - - - -編集
ページネーターではないことを認識しました-次の2つのリンクについて:
<?php echo $this->Js->link('link1', array('author' => 'abc'), array('update' => '#content')); ?>
<?php echo $this->Js->link('link2', array('author' => '123'), array('update' => '#content')); ?>
それは同じです-link1をクリックするとそのajaxが表示され、次にlink2をクリックすると通常のリロードが行われます-したがって、ajaxの更新後にスクリプトの評価が行われます...それは何でしょうか?
私は次のようにJSHelperを設定しています:
var $helpers = array('Js' => array('Jquery'));