替换内容jQuery AJAX不起作用

时间:2014-09-08 12:05:59

标签: jquery ajax replace

我的项目中有一个地图页面,其中显示了地图缩略图列表。当我点击" ShowMap"按钮打开一个更大的地图,并加载一个评论列表并显示在大地图上方。我用AJAX和jQuery做到了。还有一个" CloseMap"隐藏包含大地图和评论的div的按钮。 " ShowMap"因为它加载了正确的地图和链接到该地图的正确评论。 问题是,如果我使用APPEND,它当然会附加不同地图的注释。因此,如果我打开MAP1,它会打开MAP1并附加MAP1的注释。然后我关闭MAP1并打开MAP2。它正确打开MAP2并加载MAP2的注释,但它将它们附加在MAP1的注释下。我想改为替换内容。我已经尝试过类似$(" #output")。html(row,idU,text_map)但它不起作用:(

function show_comments(i)
{

$.ajax({
  url: 'api.php',                  
  data: {idMap: i},                 
  dataType: 'json',                
  success: function(rows)          
  {
    for (var i in rows)
    {
        var row = rows[i];
        var idU = row[1];
        var text_map = row[3];


   $('#output').append("<b> idU: </b>"+idU+"<b>text </b>"+text_map) 
   .append("<hr />");

    }
  }
});

};

2 个答案:

答案 0 :(得分:1)

如果您要替换内容,请先调用html()并在其中传递空字符串,删除以前的内容:

 $('#output').html(""); // this will remove previous content of #output
 $('#output').append("<b> idU: </b>"+idU+"<b>text </b>"+text_map) 
   .append("<hr />");

答案 1 :(得分:0)

您可以将新的html标记放入带有Id的div中,然后在另一个调用中删除它并再次附加它,它将开始为您工作,因此您的代码将如下所示:

if($('#test'))
    $('#test').remove();
$('#output').append("<div id='test'><b> idU: </b>"+idU+"<b>text </b>"+text_map+"</div>") 

Working Fiddle