我将jQuery AJAX的页面内容加载为
$(document).ready(function(){
$('#next').click(function(event){
$.ajax({
url: "load.php?start="+$('#lastid').text(),
success: function(html){
$("#results").append(html);
$("#lastid").empty().load('html #start');
}
});
});
});
在当前文档中,我有<div id="lastid"></div>
并在外部php文件中<div id="start"></div>
id =“start”的值从数据库更新,它将被转移到id =“lastid”。但是,此代码仅适用于FIRST单击。对于默认<div id="lastid">1</div>
,当单击按钮(id =“more”)时,它将读取load.php?start = 1并将当前文档更新为<div id="lastid">11</div>
(它是可见的)。但第二次点击不会加载load.php?start=11
似乎$('lastid')
读取了<div id="lastid"></div>
的默认值,但是$("#lastid").empty().load('html #start')
如何修改此代码以便后续点击?
答案 0 :(得分:3)
你需要摆脱id,因为id必须是唯一的,如果你将另一个id为last的id加载到你的站点,jQuery将不知道要获取哪个id。如果你有很多div,每个包含id,你可以使用(&#39; div:last&#39;)。text();
来读取最后一个id。所以你的ajax看起来像这样:
$(document).ready(function(){
$('#next').click(function(event){
$.ajax({
url: "load.php",
data: "start="+$('div:last').text()
success: function(html){
$("#results").append(html);
}
});
});
});
我也不知道你在成功的最后一行做了什么,因为加载应该用来从服务器用ajax加载数据,你使用$ .ajax()做什么。此外,load()至少需要一个url作为参数,请参阅here。
答案 1 :(得分:1)
尝试.live()函数而不是.click()
答案 2 :(得分:0)
您必须更改成功功能,因为点击两次时有多个#lastid
。
尝试类似:
success: function(html){
$("#lastid").removeAttr("id"); // remove's the id from #lastid
$("#results").append(html); // appends the new one
$("#lastid").empty().load('html #start');
}
答案 3 :(得分:0)
伴侣, 我从您的代码中看到的是,您在加载页面后附加事件。这会创建一个静态调用,静态值在您继续时不会更新。 我的建议是使用一个函数,它将Id动态地提供给你的ajax调用,如下所示:
$(document).ready(function(){
$(document).on("click", '#next', function(event){
$.ajax({
url: buildurl(),
success: function(html){
$("#results").append(html);
$("#lastid").empty().load('html #start');
}
});
});
});
function buildurl()
{
return "load.php?start="+ $('#lastid').text();
}
这将强制您的事件始终调用此函数和函数以从lastid获取新值。 此致