jQuery颠倒了子元素的顺序

til*_*ryj 48 jquery

使用jQuery反转子元素顺序的最佳方法是什么?

例如,如果我开始:

<ul>
  <li>A</li>
  <li>B</li>
  <li>C</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我想最终得到这个:

<ul>
  <li>C</li>
  <li>B</li>
  <li>A</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

Anu*_*rag 121

var list = $('ul');
var listItems = list.children('li');
list.append(listItems.get().reverse());
Run Code Online (Sandbox Code Playgroud)

  • listItems是包装DOM元素数组的jQuery对象的实例.它不是一个常规数组,为什么我们在它上面调用get()来获取一个我们知道可以反转的普通数组. (3认同)
  • 我之前从未注意到这个答案,但我同意这比我的回答更好.我只是说明了一个有趣的追加/前置属性. (2认同)

und*_*ned 68

编辑:Anurag的答案比我的好.

ul = $('#my-ul'); // your parent ul element
ul.children().each(function(i,li){ul.prepend(li)})
Run Code Online (Sandbox Code Playgroud)

如果调用.prepend()含有多于一种元素的物体上时,被附加的元件将被克隆用于第一后的额外的目标元件,所以一定你只选择一个元素.

  • 实际上,您可以复制并粘贴代码并在此页面上进行尝试,然后查看菜单栏本身. (4认同)
  • @Matt - 一个DOM元素只能存在于一个地方,因此在这种情况下它会被移动,而不是被复制. (2认同)

Kyl*_*ers 5

试试这个:

$(function() {
  $.fn.reverse = [].reverse;
  var x = $('li');
  $('ul').empty().append(x.reverse());
});
Run Code Online (Sandbox Code Playgroud)