Javascript 将字符串获取到具有多个.each函数的数组

Javascript 将字符串获取到具有多个.each函数的数组,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有两个元素,里面有字符串。(我使用。每个`函数) 问题是第二个数组(在获得字符串后。每个)将替换第一个数组 抱歉,如果您不明白,请尝试看下面 $('div').each(function () { var data = []; $('li', this).each(function () { data.push($(this).text()); }); var data_length = data.length; $(this).chil

我有两个元素,里面有字符串。(我使用。每个`函数)

问题是第二个数组(在
获得字符串后。每个
)将替换第一个数组

抱歉,如果您不明白,请尝试看下面

$('div').each(function () {
    var data = [];
    $('li', this).each(function () {
        data.push($(this).text());
    });
    var data_length = data.length;
    $(this).children("code").html(data + "");
    $("code").click(function () {
        data.move(data_length - 1, 0);
        $(this).html(data + "");
    });
});

Array.prototype.move = function (old_index, new_index) {
    if (new_index >= this.length) {
        var k = new_index - this.length;
        while ((k--) + 1) {
            this.push(undefined);
        }
    }
    this.splice(new_index, 0, this.splice(old_index, 1)[0]);
    return this; // for testing purposes
};
演示:


我做错了什么?

原因与您做的相同。
$(this)。children('code')
您还应该将单击事件与作用域绑定

问题是,您正在迭代2个div(您的
每个
),这意味着您要绑定
$('code')
两次。第一次绑定
code
时,它与第一个数据数组(1)绑定,然后第二次绑定(2)。因此,它首先为1s执行单击代码,然后立即为2s运行该代码,从而覆盖。更改为
$(this)。查找(“code”)
(或
子项
),它将按预期工作


出于与执行
$(此项)相同的原因。子项('code')
您还应将单击事件与范围绑定

问题是,您正在迭代2个div(您的
每个
),这意味着您要绑定
$('code')
两次。第一次绑定
code
时,它与第一个数据数组(1)绑定,然后第二次绑定(2)。因此,它首先为1s执行单击代码,然后立即为2s运行该代码,从而覆盖。更改为
$(this)。查找(“code”)
(或
子项
),它将按预期工作

在这一行:

$("code").click(function () { ...
这说明要用该信息更新所有
code
。您需要更改它,使其特定于每个div:

$(this).find("code").click(function () { ...
更新的小提琴:

在这一行:

$("code").click(function () { ...
这说明要用该信息更新所有
code
。您需要更改它,使其特定于每个div:

$(this).find("code").click(function () { ...
更新的小提琴:

如果我没弄错的话,你的
.move(l-1,0)
可以写成
a.unshift(a.pop())
如果我没弄错的话,你的
.move(l-1,0)
可以写成
a.unshift(a.pop())