0

在我的 jquery 函数中,我尝试拆分一个长字符串。我认为拆分时,结果是一个数组。所以我使用 .each 来获取拆分字符串的值。但是,它没有显示任何内容。我在此语法中的错误在哪里:

 function DisplayList(data) {
    $.each(data.split('|'), function (index, value) {
        $(".listDisplay").html('<p>' + value + '</p>');
    });
 };  

当我将索引放入 .html() 而不是值时,我会看到数组中的元素数。它应该显示类似 [0]、[1]、[2]... 对吗?

我真正想要的是以段落的形式显示我的拆分字符串的内容...(.listDisplay 是一个 div)

4

3 回答 3

1

该行:

$(".listDisplay").html('<p>' + value + '</p>');

用当前 .listDisplay 覆盖“.listDisplay”的内容value。因此,每次迭代都会$.each()覆盖先前的值,然后在$.each()完成时“.listDisplay”将保留value最终迭代中的任何内容。

尝试将其更改为:

$(".listDisplay").append('<p>' + value + '</p>');

这将在“.listDisplay”的末尾添加一个新段落,而不是覆盖现有内容。所以.each()将为返回的数组中的每个项目添加一个新段落data.split('|')

(您可能想要添加$(".listDisplay").empty()$(".listDisplay").html("")$.each()清除 div 中的任何现有内容之前添加。)

另一种方法是在没有以下的情况下在一行中执行此操作$.each()

function DisplayList(data) {
   $(".listDisplay").html('<p>' + data.replace(/\|/g, '</p><p>') + '</p>');
};
于 2012-05-25T01:57:09.987 回答
0

那只会显示最后一个值。

function DisplayList(data) {
    var html = '';
    $.each(data.split('|'), function (index, value) {
        html += '<p>' + value + '</p>';
    });

    $(".listDisplay").html(html);
}; 
于 2012-05-25T01:57:16.643 回答
0

只需使用带有 append 方法的常规 for 循环...

var dataArr = data.split('|'),
    list = $(".listDisplay");

list.empty(); // This will clear the list first.
for (var i = 0, len = dataArr.length; i < len; i++) {
    list.append('<p>' + dataArr[i] + '</p>');
}
于 2012-05-25T01:58:50.937 回答