2011-08-24 54 views
1

正在为web应用程序创建评论系统时,评论在用户点击评论图片时加载,html代码是用json动态生成以显示评论。 但再次单击图像时,该请求被再次提出用相同的数据确定元素是否存在

填充页面下面有我的代码

function latest_pheeds() { 
    var action = url+"pheeds/latest_pheeds"; 
    $.getJSON(action,function(data) { 
     $.each(data,function(index,item) { 
      $('#pheed-stream').append 
      (
      '<div class="pheed" id="'+item.pheed_id+'">'+ 
      '<p><a href="">'+item.user_id+'</a></p>'+ 
      '<p>'+item.pheed+'</p>'+ 
      '<div class="pheed_meta">'+ 
      '<span>'+item.datetime+' Ago</span>'+ 
      '<span>'+item.comments+ 
      '<img class="comment_trigger" src="/pheedbak/assets/img/comment.png" title="Click to comment on pheed" onclick="retrieve_comments('+item.pheed_id+')">'+ 
      '</span>'+ 
      '</div>'+ 
      '</div>' 
      ); 
     }); 
    }); 
} 



function retrieve_comments(pheed_id) { 
    var action = url+'comments/get_comments'; 
    var crsf = $('input[name=ci_csrf_token]').val(); 
    var dataString = "pheed_id="+pheed_id+"&ci_csrf_token="+crsf; 
    $.ajax({ 
     url:action, 
     type:'POST', 
     cache:false, 
     dataType:'json', 
     data:dataString, 
     success:function(data) { 
      $.each(data,function(index,item) { 
       $("#" + pheed_id).append(
       '<div class="pheed_comments">'+ 
        '<div class="comment">' 
        +'<span><p>'+item.user+'</p></span>' 
        +item.comment+ 
        '</div>'+ 
       '</div>'+ 
       '<div id="comment_box">'+ 
        '<textarea id="comment" cols="30">'+ 
        '</textarea><br>'+ 
        '<input type="button" class="submit_btn" value="comment" />'+ 
       '</div>' 
       ); 
      }); 
     } 
    }); 
} 

latest_pheeds()加载pheeds和retrieve_comments获得通过pheed_id的意见到它。 我如何确定评论区域是否已经被填充,并且如果可用,则用新评论更新它。由于

回答

3

检查

$("#" + pheed_id +' .pheed_comments').length 

如果为0,如果该元素(我猜意思VOU div.pheed_comments)不存在。

+0

我会尽力谢谢 – MrFoh

2

几种选择:

1)如果你已经从你的Ajax调用所有的评论,然后删除你从DOM有以前的意见,并插入你刚刚得到的一切。

2)如果你有一个ajax调用只能检索新的评论,那么你可以检查DOM,看看你是否已经在DOM中有评论,然后在一些令牌之后请求新评论(即你以前会保存)。当你收到新的评论时,你可以将它们附加到你所拥有的内容上。

$('#pheed-stream').children().length会告诉您在pheed-stream层次中有多少个孩子。如果这是零,你还没有做过任何的调味。

我会建议,最简单的方法是检索所有评论,并用新评论列表替换所有内容,而不是尝试检索新评论。仅检索新评论需要某种时间标记,您可以向服务器提供这些标记,以便知道哪些“新评论”可以为您提供帮助。

$("#" + pheed_id + " .pheed_comments").length会告诉你是否有任何评论已经被检索到,但是该pheed_id。

1

您正在添加ID与ID。只要检查它是否存在。如果是,则更新它,否则插入。