2011-08-15 6 views
0

の作品の問題である:jQueryの機能は、ここでは一度だけ

私はいくつかのPHPスクリプトを実行して、いくつかの結果を返すようにjqueryのを必要としています。ページにページネーションがあります(phpによって生成されます)。したがって、2つの場合があります。ユーザーは外部リンクからページを取得する=>ページ付けは最初から開始します。または、ユーザーがページを選択すると、jqueryはPHPを再度実行し、新しいページネーションと結果を取得します。

var page = ''; 
$.getJSON("test.php", {resid: "[[*id]]"}, function(output) { 
    $('#testdiv').html(output.content).show(); 
    $('#pagination').html(output.pagination).show(); 
    $('a.pagenav').click(function() { 
     page = $(this).attr('href'); 
     $.getJSON("test.php", {resid: "[[*id]]", spp: page}, function(output) { 
     $('#testdiv').html(output.content).show(); 
     $('#pagination').html(output.pagination).show(); 
     }); 
     return false; 
    }); 
}); 

スクリプトがinilial負荷で動作します(ページネーションが生成されます)、その後1時間、私はページを選択します。 はここにスクリプトです。しかし、次にページを選択するときには、それはURLに従います。 ヘルプが必要) thx

答えて

1

問題の原因は、クリックした次のページにクリックハンドラがバインドされていないことです。新しいページを読み込んだ後でも、別の要素にイベントをバインドする必要があります。あなたの場合、#paginationは良い候補のようです。

var page = ''; 
$.getJSON("test.php", {resid: "[[*id]]"}, function(output) { 
    $('#testdiv').html(output.content).show(); 
    $('#pagination').html(output.pagination).show(); 
}); 

$('#pagination').delegate('a.pagenav', 'click', function() { 
    page = $(this).attr('href'); 
    $.getJSON("test.php", {resid: "[[*id]]", spp: page}, function(output) { 
     $('#testdiv').html(output.content).show(); 
     $('#pagination').html(output.pagination).show(); 
    }); 
    return false; 
}); 

あまり推奨されるアプローチ(しかし、あなたのコードをリファクタリングしやすい)は、DOMツリーのルート要素にイベントを結合する、live()を使用することです。

$('a.pagenav').live('click', function() { 
    ... 
}); 
+0

Thx、良いレッスン、それは最初の方法で今働いています。 – Sobakinet