0

我的html是这样生成的:

 <div class="tags">
    <ul>
        <li>Red</li>
        <li>Green</li>
    </ul>

    <ul>
        <li>Blue</li>
        <li>Yellow</li>
    </ul>

</div>

去除多余的 ul 元素并浓缩为一个的最佳方法是什么。例如:

 <div class="tags">
    <ul>
        <li>Red</li>
        <li>Green</li>
        <li>Blue</li>
        <li>Yellow</li>
    </ul>

</div>

非常感谢

4

5 回答 5

1

可能有一个聪明的(er)方法可以做到这一点,但简单的迭代应该可以让你到达那里:

$result = $('<ul></ul>');
$('ul').each(function() {
  $(this).children('li').appendTo($result);
});
$('.tags').empty().append($result);

​在这里摆弄

于 2012-07-26T02:47:39.377 回答
1
$('.tags li').appendTo('.tags > ul:first-child');
$('.tags > ul:not(:first-child)').remove();

小提琴

于 2012-07-26T02:51:06.853 回答
0
$('.tags ul:eq(0)' )  // targeting first ul
    .append( $('.tags ul:gt(0) li') )  // append all children of other ul
    .parent()  // jump to .tags
    .find('ul:gt(0)')  // target all ul accept first
    .remove(); ​// remove those ul​​​​​​​​​​​​​​​​​​​​​​​​​​​

或者

$('.tags').html($('<ul/>', {
    html: $('.tags ul li')
}))​;​
于 2012-07-26T04:19:38.123 回答
0

尝试这个

$('div.tags').html($('<ul></ul>').html($('div.tags ul li')));

演示。

于 2012-07-26T02:56:44.933 回答
0

这是一个简单的答案

var thisUL = $('ul').eq(0);
    $('li').each(function() {
    $(this).appendTo(thisUL);
      $('ul').each(function() {
       var elem = $(this);
         if (elem.children().length == 0) {
          elem.remove();
         }
     });
   });
于 2012-07-26T02:58:23.420 回答