我有一个拥有id myul的UL。我需要从中减少几个LI,需要创建一个新的UL。 所以我通过
过滤了我的ULvar t=$('#myul li').filter(function(){
if(mycondition)
{
return true;
}
})
所以在这里我说从主UL过滤了3个LI
我需要将选定的LI复制到一个类似
的变量var k="<div><ul id='mynewul'><ul><div>";
我尝试的知识较少 $(t)的.appendTo($(k)的.find(UL));
但是没有发生任何事情,或者当我试图在k中找到LI的数量时 $(k).find(&#39; ul li&#39;)。length;
它说0。
那么如何在不影响主UL的情况下实现这一目标,或者如何将其作为标记分配给变量
答案 0 :(得分:2)
您可以包装已过滤的元素,然后生成HTML,如下所示:
var x = $('#myul li')
.filter(function() {
return $(this).text()[0] == 'b';
})
.clone()
.wrapAll('<div><ul id="mynewul">')
.parent().parent() // move up two elements
.html()
console.log(x); // <ul id="mynewul"><li>bar</li><li>baz</li></ul>
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="myul">
<li>foo</li>
<li>bar</li>
<li>baz</li>
<li>qux</li>
</ul>
&#13;
答案 1 :(得分:1)
你必须将元素包装在jQuery中,将其附加到正确的元素,然后附加过滤器li的克隆。
//Filter all the lis you need
var $lis = $('#myul li').filter(function(){
if(mycondition)
{
return true;
}
});
//Wrap and append to the page wherever you want
var k="<div><ul id='mynewul'></ul><div>";
$(k)
.appendTo(document.body)
.find('ul')
.append($lis.clone());
由于我正在克隆这些内容,因此不会影响您想要的原始内容。