2

这看起来很简单。不知道我是怎么弄得一团糟的。

我有一个清单。我想将前三个项目放在前面并将它们添加到后面。我不想从前面移除物品。我希望他们在前面和后面。

所以我的清单是这样开始的

[1,2,3,4,5,6,7,8,9,10]

在我完成后它看起来像这样

[1,2,3,4,5,6,7,8,9,10,1,2,3]

此列表存储在<ul>

这是我的代码

_options.slides = $.makeArray($('.slide'));
var el = [];
$.each(_options.slides.splice(0, 3), function (x, item) {
     el.push(item);
});
$('#video-triggers').clone().append(el);  //break point here

代码中的某些人可能是不必要的,因为我已经玩了太久了。如果我在克隆追加行上放一个断点并在控制台(开发工具)中执行代码,结果如下

在此处输入图像描述

编辑

克隆和附加行有我的结果,但容器没有这些结果?

这是没有克隆的结果

在此处输入图像描述

编辑 2

我也试过这个

$('#video-triggers').append(_options.slides.concat(el))
4

4 回答 4

2

你有你的操作顺序和变量混淆了。. . 您正在克隆您的目标<ul>,而不是<li>您要复制的目标。尝试这个 。. .

改变这个:

$('#video-triggers').clone().append(el);

. . . 对此:

el.clone().appendTo($('#video-triggers'));
于 2013-08-09T17:36:49.710 回答
1

那是因为您克隆了它,然后将新元素添加到克隆中(并且克隆在您的页面上不存在)。

于 2013-08-09T17:18:09.393 回答
1

使用unshift(); 将项目推到数组的前面。

$.each(_options.slides.splice(0, 3), function (x, item) {
     el.push(item);
     el.unshift(item);
});
于 2013-08-09T17:19:24.927 回答
0
a = [1,2,3,4,5,6,7,8,9,10];
b = a.concat(a.slice(0,3));
console.log(b);
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3]
于 2013-08-09T17:22:47.420 回答