我有两个元素并且会在里面找到字符串。 (我使用.each`函数)
问题是第二个数组(在.each
获得字符串之后)替换第一个数组。
对不起,如果你不明白,但试着看下面......
$('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
};
我做错了什么?
答案 0 :(得分:3)
出于同样的原因,你{@ 1}}也应该将你的点击事件与范围绑定。
问题是,你正在迭代2个div(你的$(this).children('code')
),这意味着你要绑定each
两次。第一次绑定$('code')
时,它会绑定第一个数据数组(1),然后第二次绑定(2)。因此,它首先执行1s的单击代码,然后立即运行2s,从而覆盖。更改为code
(或$(this).find("code")
)并按预期工作。
答案 1 :(得分:1)
在这一行:
$("code").click(function () { ...
这告诉您使用该信息更新所有code
。您需要更改它以使其特定于每个div:
$(this).find("code").click(function () { ...
更新了小提琴:http://jsfiddle.net/kdpN7/2/