将LI附加到字符串变量jquery中的新UL

时间:2015-06-09 14:10:21

标签: jquery

我有一个拥有id myul的UL。我需要从中减少几个LI,需要创建一个新的UL。 所以我通过

过滤了我的UL
var 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的情况下实现这一目标,或者如何将其作为标记分配给变量

2 个答案:

答案 0 :(得分:2)

您可以包装已过滤的元素,然后生成HTML,如下所示:

&#13;
&#13;
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;
&#13;
&#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());

由于我正在克隆这些内容,因此不会影响您想要的原始内容。

演示 http://plnkr.co/edit/jKplpOHRzHM9Sk1a5NA1?p=preview