显示更多按钮,带有变量的div id

时间:2012-06-01 00:35:34

标签: php javascript ajax html5

我正在制作一个小脚本,在显示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可以更改?

提前致谢

3 个答案:

答案 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);

感谢您的回答