我希望使用jquery追加匹配li元素的子元素。例如
第一个列表
<ul class="menu1">
<li>Red</li>
<ul>
<li>apple</li>
<li>rose</li>
</ul>
<li>Blue</li>
<ul>
<li>sky</li>
<li>ocean</li>
</ul>
</ul>
第二个清单
<ul class="menu2">
<li>Red</li>
<li>Blue</li>
</ul>
因此,我想使用JQuery将第一个列表中的子列表附加到第二个列表的匹配元素。
这是我尝试过的事情
//// create array of menu 1 items
var menuitems = new Array();
$('.menu1 li').each(function(){
menuitems.push($(this).text);
});
//// create array of menu 2 items
var secondlistitems = new Array();
$('.menu2 li').each(function(){
secondlistitems.push($(this).text);
});
///// compare and if match append
for (var i = 0; i < menuitems.length; i++) {
for (var j = 0; j < secondlistitems.length; j++) {
if ($.inArray(secondlistitems[i], menuitems) > -1) {
menuitems[i].children().appendTo(secondlistitems[j]);
}
}
};
答案 0 :(得分:0)
如果你的HTML组织得更好,你可能可以更轻松地做你想做的事情......这里有一个可行的代码片段,可以做你想做的事情
$(function() {
$("ul.menu1").children("li").each(function (){
var subListName = $(this).html();
var subListContent = $(this).next("ul").clone();
$(".menu2 li:contains("+ subListName +")").after(subListContent);
});
});
第一行:遍历您的.menu1
并遍历每个li
第二行:获取子列表名称
第三行:找到最接近<ul>
的子列表,并克隆其内容
第四行:在.menu2
中找到匹配的子列表,然后插入我们刚刚保存的内容
答案 1 :(得分:0)
您可以遍历li
中的每个.menu2
,将li
的每个.menu1
与其文字相匹配,如果匹配,则克隆此ul
下的li
{1}}并将ul
插入适当位置的.menu2
$(function () {
var menu1 = $('.menu1'),
menu2 = $('.menu2');
$('li', menu2).each(function () {
var m2_li = $(this);
$('> li', menu1).each(function () {
if ($(this).text() == m2_li.text()) {
$(this).next('ul').clone().insertAfter(m2_li);
}
})
})
});