2012-05-25 45 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

相关问题