0

私のhtmlは次のように生成されます:

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

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

</div>

余分なul要素を取り除き、1つに凝縮する最良の方法は何ですか. 例えば:

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

</div>

どうもありがとう

4

5 に答える 5

1

おそらくそれを行うための賢い(より)方法がありますが、単純な反復でそこにたどり着くはずです:

$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 に答える