我正在制作一个小脚本,在显示10个条目的最后一个显示更多按钮。 这是代码
<div id="more<?=$lastid;?>">
<a onclick="showmore(<?=$lastid;?>);">More</a>
</div>
,脚本是
function showmore(lastid) {
$.post("/ajax/showmore.php", {
lastid: lastid,
}, function(response) {
$("#more" + lastid).show();
setTimeout("finishAjax('more' + lastid, '" + escape(response) + "')", 300);
});
return false;
}
function finishAjax(a, b) {
$("#" + a).html(unescape(b));
$("#" + a).fadeIn(1e3)
}
但脚本不起作用?这里有什么问题 ?
我用一个常数div id测试了脚本,它运行良好但是当我在div上添加了$ lastid而在脚本端添加了$(“#more”+ lastid)它不起作用
是否有任何想法让DIV ID可以更改?
提前致谢
答案 0 :(得分:1)
而不是将id附加到更多的丑陋,为什么不给div一个“更多”的类
<div id="<?=$lastid;?>" class="more">
<a onclick="showmore(<?=$lastid;?>);" >More</a>
</div>
然后您的jquery选择器可以是:
$("div.more#" + id).show()
答案 1 :(得分:1)
您在字符串中为setTimeout()引用lastid。您应该使用闭包来解决此问题。不过这是一个干净的版本:
function showmore(lastid) {
$.post("/ajax/showmore.php",
{ lastid:lastid },
resultHandler);
return false;
function resultHandler(response) {
$("#more" + lastid).html(response).fadeIn(1e3);
}
}
答案 2 :(得分:0)
谢谢大家
我发现了错误
就在这一行
setTimeout("finishAjax('more' + lastid, '"+escape(response)+"')", 300);
我纠正了
setTimeout("finishAjax('more"+lastid+"', '"+escape(response)+"')", 300);
感谢您的回答