-1

所以基本上我有n个div来保存评论,就像在facebook上一样,在Jquery中我有一个运行ajax调用的函数,可以获取每个div的评论,至少这是我想要它做的,它只获取评论对于页面上的第一个 div,如何使每个 div 的函数同时运行?

这是代码:Ajax

interval = setInterval(function(){
    comment_id = $("#main-photo"+k).attr("commentid");
    k = $("#main-photo"+k).attr("nr_crt");
    $.post('../utility/countcomm.php', { comment_id: comment_id } , 
        function(output) {
            if (+total1 < +output)
                total1 = output;
            if (+total1 > +total2)
            {   
            $.post('../utility/fetchcomments.php', { comment_id: comment_id, start:total2, end:total1 } , 
                function(output1) {
                    $(".comment_append"+k).append("<p class='comment'>"+output1+"</p>");
                    var scrolldown = $('.comment_append'+k)[0].scrollHeight;
                    $('.comment_append'+k).animate({scrollTop:scrolldown}, 200);
                });
            total2 = total1;
            }
        });
},100);

HTML:

<div id="comment_box">
    <input type="text" name="comment" id="type_comment" value="Type a comment." />
    <div id="comment_append" class="comment_append<?php echo $k; ?>">

    </div><!--comment_append end-->
    <img id="main-photo<?php echo $k; ?>" nr_crt="<?php echo $k; ?>" class="main-photo" src="<?php echo $user_uploads['pic1'] ?>" width="<?php echo $width; ?>"  height="<?php echo $height; ?>" commentid="<?php echo $user_uploads['comment_id']; ?>"/>
</div><!--comment_box end-->

每个 div 都有一个在 php.ini 中动态分配的不同 id。谢谢你。

4

1 回答 1

1

当我正确阅读/理解您的代码时,您想查找所有带有 main-photo 类的图像,获取 commentid 并更新相关的 div?在这种情况下,您需要对具有该类的所有图像进行循环:

interval = setInterval(function(){
    // loop over all images with the class
    $(".main-photo").each( function() {
        // get the comment_id and k (the unique part of the id)
        var $element = $(this),
            comment_id = $element.attr("commentid"),
            k =  $element.attr("nr_crt");
        // the rest is unchanged...
        $.post('../utility/countcomm.php', { comment_id: comment_id } , 
        function(output) {
            if (+total1 < +output)
                total1 = output;
            if (+total1 > +total2)
            {   
            $.post('../utility/fetchcomments.php', { comment_id: comment_id, start:total2, end:total1 } , 
                function(output1) {
                    $(".comment_append"+k).append("<p class='comment'>"+output1+"</p>");
                    var scrolldown = $('.comment_append'+k)[0].scrollHeight;
                    $('.comment_append'+k).animate({scrollTop:scrolldown}, 200);
                });
            total2 = total1;
            }
        });

    });
},100);

顺便说一句,您应该考虑一下您的定期刷新设置(100 毫秒)会产生大量的服务器请求。根据数据量,它可能会导致一些问题。

于 2013-02-02T10:55:37.543 回答