如何在里面包装和重新排序元素?

时间:2013-07-10 11:32:25

标签: javascript jquery wrapall

我试图在li元素中用jQuery包装一些元素。我的问题是我想切换它们在li里面的顺序。现在li开始 - a - div - li结束,但我希望li开始 - div - a - li结束。

我该怎么做?我尝试了一切,但它没有奏效。这是我目前的代码:

$('a.top_link+div.sub').not(":first").each(function() {
  $(this).prev().andSelf().wrapAll('<li class="aaa">');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="something.com" class="top_link">Something</a>
<div class="sub">Some other content..</div>

我想将其包装并重新排序内容,如下所示:

<li class="aaa">
  <div class="sub">Some other content..</div>
  <a href="something.com" class="top_link">Something</a>
</li>

上述元素不止一个,只有内容不同(菜单的一部分)。

1 个答案:

答案 0 :(得分:1)

这应该有效:

$('a.top_link+div.sub').each(function () {
    $(this).insertBefore($(this).prev()).add($(this).next()).wrapAll('<li class="aaa">');
});

对于每个div.sub,上面的代码执行:

  1. 将其移至<a>
  2. 之前
  3. <a>添加到集合
  4. <li>
  5. 包裹

    演示http://jsfiddle.net/vjC3x/