Javascript 在另一个列表中均匀插入列表
我想用jQuery合并两个列表,但我甚至不知道从哪里开始。我需要将每个项目放在另一个列表之间,而不是在列表的前面或后面。不太确定这个词的最佳表达方式,但基本上我有以下HTMLJavascript 在另一个列表中均匀插入列表,javascript,jquery,Javascript,Jquery,我想用jQuery合并两个列表,但我甚至不知道从哪里开始。我需要将每个项目放在另一个列表之间,而不是在列表的前面或后面。不太确定这个词的最佳表达方式,但基本上我有以下HTML <ul> <li>A<li> <li>B<li> <li>C<li> <li>D<li> <li>E<li> </ul> <ul> <l
<ul>
<li>A<li>
<li>B<li>
<li>C<li>
<li>D<li>
<li>E<li>
</ul>
<ul>
<li>1<li>
<li>2<li>
<li>3<li>
<li>4<li>
<li>5<li>
</ul>
- A
-
- B
-
- C
-
- D
-
- E
-
- 1
-
- 2
-
- 3
-
- 4
-
- 5
-
我想要一种方法来获得以下信息:
<ul>
<li>A<li>
<li>1<li>
<li>B<li>
<li>2<li>
<li>C<li>
<li>3<li>
<li>D<li>
<li>4<li>
<li>E<li>
<li>5<li>
</ul>
- A
-
- 1
-
- B
-
- 2
-
- C
-
- 3
-
- D
-
- 4
-
- E
-
- 5
-
简短回答
您可以将jQuery中的选择器视为任何其他数组,因此可以将这两个选择映射到包含交织结果(a1b2c3..)的新数组中,并将元素移动到新的父数组中。有时,找到答案最困难的部分是知道如何用词来表达问题
请记住,如果列表的长度不同,您需要进行一些调整
工作演示
//将它们交织在一起
var interwined=$.map($(“#第一个li”),函数(v,i){
返回[v,$(“#秒里”)[i];
});
//移除它们
$(交错)。删除();
//将它们添加到新的父级
$。每个(相互交织,功能(即,e){
$(“#交织”)。追加($(e))
});
//干净的老父母
$(“#第一,#第二”).remove()代码>
- 一,
- 二,
- 三,
- 四,
- 五,
- a
- b
- c
- d
- e
简短回答
您可以将jQuery中的选择器视为任何其他数组,因此可以将这两个选择映射到包含交织结果(a1b2c3..)的新数组中,并将元素移动到新的父数组中。有时,找到答案最困难的部分是知道如何用词来表达问题
请记住,如果列表的长度不同,您需要进行一些调整
工作演示
//将它们交织在一起
var interwined=$.map($(“#第一个li”),函数(v,i){
返回[v,$(“#秒里”)[i];
});
//移除它们
$(交错)。删除();
//将它们添加到新的父级
$。每个(相互交织,功能(即,e){
$(“#交织”)。追加($(e))
});
//干净的老父母
$(“#第一,#第二”).remove()代码>
- 一,
- 二,
- 三,
- 四,
- 五,
- a
- b
- c
- d
- e
考虑到:
- 两个列表的长度相同
- 您希望结果出现在第二个列表中
以下代码应该可以工作(请参见内联注释):
//从每个列表中获取所有li项
var firstLIs=$('ul#first li');
var secondLIs=$('ul#second li');
//获取列表的长度
var total=第一个LIS.长度;
//将存储结果的变量(合并的LIs)
var内容=[];
对于(变量i=0;i
考虑到:
- 两个列表的长度相同
- 您希望结果出现在第二个列表中
以下代码应该可以工作(请参见内联注释):
//从每个列表中获取所有li项
var firstLIs=$('ul#first li');
var secondLIs=$('ul#second li');
//获取列表的长度
var total=第一个LIS.长度;
//将存储结果的变量(合并的LIs)
var内容=[];
对于(变量i=0;i
请参见这是一个称为阵列缝合的概念,可通过以下代码完成:
注意-即使您的两个数组长度不相等,此方法也有效
$(函数(){
var列表=$(“ul”);
//从jQuery集合创建实际数组
var list1=Array.apply(null,lists.eq(0).find(“li”);
var list2=Array.apply(null,lists.eq(1).find(“li”);
功能针迹(arr1、arr2){
var newArr=[];
while(arr1.length&&arr2.length){
newArr.push(arr1.shift());
newArr.push(arr2.shift());
}
返回新的arr.concat(arr1,arr2);
}
var newList=stitch(列表1,列表2);
$(“#结果”).html(新列表);
});代码>
- A
- B
- C
- D
- E
- 一,
- 二,
- 三,
- 四,
- 五,
这是一个称为阵列缝合的概念,可通过以下代码完成:
注意-即使您的两个数组长度不相等,此方法也有效
$(函数(){
var列表=$(“ul”);
//从jQuery集合创建实际数组
var list1=Array.apply(null,lists.eq(0).find(“li”);
var list2=Array.apply(null,lists.eq(1).find(“li”);
功能针迹(arr1、arr2){
var newArr=[];
while(arr1.length&&arr2.length){
newArr.push(arr1.shift());
newArr.push(arr2.shift());
}
返回新的arr.concat(arr1,arr2);
}
var newList=stitch(列表1,列表2);
$(“#结果”).html(新列表);
});代码>
- A
- B
- C
- D
- E
- 一,
- 二,
- 三,
- 四,
- 五,
// Getting all li items from each list
var firstLIs = $('ul#first li');
var secondLIs = $('ul#second li');
// Getting the length of the list
var total = firstLIs.length;
// Var that will store the result (merged LIs)
var content = [];
for (var i = 0; i < total; i++) {
// Feeding our content array with LI items from both list
content.push(firstLIs[i], secondLIs[i]);
}
// Overriding content from second list with the newly merged LIs
$('ul#second').html(content);