2011-08-15 84 views
0

這裏有一個問題:jQuery的功能僅一次

我需要jQuery來執行一些PHP腳本,然後返回了一定的成效。頁面上有一個分頁(由php生成)。所以可以有兩種情況。用戶從外部鏈接進入頁面=>分頁從頭開始。或者用戶選擇一個頁面=> 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負載(分頁獲取生成),然後有一次我選擇一個頁面。但是下次我選擇一個頁面時,它只是跟隨它的網址。 需要幫助) 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; 
}); 

甲推薦以下的方法(但更容易重構代碼到)是使用live(),其結合所述事件到DOM樹的根元素。

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

Thx,很好的教訓,它現在用第一種方法工作。 – Sobakinet