1

我不知道如何在 Stackoverflow 中搜索这个问题,它提供了不同的解决方案,并且与我的问题无关。所以我会再次需要你们的帮助。

变量 obj 的值:

item.title = Title1 and Title2

item.description = Description1 and Description2

文件:

function test_pop() {
    var fb_id = "xxxxxxxxxxxx";
    var v_id = "xxxxxxxx";

    $.post('http://mysite.com/myfile.php', {fb_id: fb_id, v_id: v_id}, function(data) {
        var obj = $.parseJSON(data);
        $.each(obj,function(index, item){
           achievement = "You Obtained " + item.title + " " + item.description;
           achievement_pop(achievement);
        });
    });
}

成就流行功能:

function achievement_pop(data) {
    $("#achievement_popup").html(data).show(); //DIV that should show up
}

所以问题是,当 div 出现时,它只输出:

    <div> <!-- Imagine that this content is inside a DIV -->
**You Obtained Title2 Description2**

    </div>

但我的愿望输出是:

    <div> <!-- Imagine that this content is inside a DIV -->

**You Obtained Title1 Description1**

**You Obtained Title2 Description2**

    </div>

希望大家帮帮我,谢谢。

4

2 回答 2

3

html功能正在替换 div 的全部内容,而不仅仅是添加。

一个解决方案是更换

$("#achievement_popup").html(data).show(); 

$("#achievement_popup").html($("#achievement_popup").html()+data).show(); 

但它有点重。就我个人而言,我会首先构建 html 并html只使用一次该功能。

于 2013-01-02T07:07:18.807 回答
2

用于append()添加到元素的末尾,而不是完全替换内容html()

或者,如果您想一次将现有内容替换为所有新内容:

/* start with empty string*/
var achievement='';
$.each(obj,function(index, item){
    /* add to string on each pass of loop - can use any html you want here*/
     achievement += "You Obtained " + item.title + " " + item.description +'<br>';
});
/* update element once all data parsed*/
 achievement_pop(achievement);

从处理的角度来看,解析为字符串并进行一次更新是最有效的

于 2013-01-02T07:09:12.147 回答