2012-05-25 108 views
0

如果DIV結束,我需要在每次點擊文本「加載更多」時加載內容。我目前的代碼如下:Jquery:只在第一次點擊「加載更多......」時加載下一頁

<div id="Container"> <p class="load">load more</P> </div> 

$(".load:last").click(function(){ 
$(".load:last").load("nextPage.php", function() { 
$(this).hide(); 

$("div#Container").append($(this).html()); 
$("div#Container").append("<p class=\"load\">load more...</p>"); 

}); 

第一次單擊工作,它裝載來自nextPage.php更多。然而,隨後的點擊不會觸發負載。我究竟做錯了什麼?

+0

你不需要$(「。load:last」),因爲你正在隱藏前面的加載更多段只是使它$(「。load」)。click(function(){...}); – Tuscan

+0

我確實嘗試過但結果相同。我也嘗試過:last和no hide(),以及no:last並使用「load」作爲id而不是class,但它沒有任何區別 – zzz

回答

0
$(".load:last").live('click', function() { 
     $(this).remove(); 
     //Or 
     // $(this).hide(); 
     $(".load:last").load("nextPage.php", function() { 
      $("div#Container").append($(this).html()); 
      $("div#Container").append("<p class=\"load\">load more...</p>"); 
     }); 
    }); 
+0

使用live ..... 。 – Thulasiram

+0

live從jQuery 1.7開始不推薦使用,如果您使用的是1.4+,請使用delegate代替文檔:'從jQuery 1.7開始,不推薦使用.live()方法。使用.on()附加事件處理程序。老版本的jQuery用戶應該優先使用.delegate()而不是.live()。' –

+0

這對我有用,謝謝你們!雙檢查我的jQuery,結果我使用1.6 jQuery,因此.on()沒有觸發但.live工作。 – zzz

0

由於.loaddiv#Container新的每次追加,你應該使用一個活的事件處理程序到.load類似以下內容:

$("div#Container").on('click', '.load', function() { 
    $(this).parent('div#Container').load('nextPage.php', function() { 
    $('div#Container').append("<p class=\"load\">load more...</p>"); 
    }) 
}) 
+0

由於某種原因它不會觸發任何負載。我也嘗試在on()事件處理程序中使用alert(「hello」),但在單擊「加載更多」時從未觸發過 – zzz

+0

對不起,它確實觸發了事件 - 它不工作,因爲我正在使用1.6 jQuery所以必須使用.live()。事件處理程序並不完全符合我的要求,但它幫助我找到了解決方法,謝謝! – zzz

0

嘗試使用.live()方法or.on ()的jquery,這附加一個事件處理程序的所有元素匹配當前選擇器,現在和將來。

Click here for information and example for .live event in jquery
我希望這一定能夠解決您的問題。

祝你好運! :)

+0

live從jQuery 1.7開始棄用,如果您使用1.4+,請使用delegate代替,從docs開始:'從jQuery 1.7開始,不推薦使用.live()方法。使用.on()附加事件處理程序。老版本的jQuery用戶應該使用.delegate()優先於.live()。' –

+0

感謝闡明這個主題...是.live()方法已被廢棄。 .on()正在使用 –

+0

謝謝你們,這一切都非常有幫助! – zzz

相關問題