2012-02-09 82 views
3

我是jquery的新手,我有一个包含多个无序列表的页面ul。 我需要颠倒每个ul的顺序,我看到了这个答案jQuery reversing the order of child elements 但它会混淆具有所有列表的所有项目。 我试图改变代码以适应我的需求,但它不会做我想要的,我可以访问每个ul的每个li,但我不知道如何反转li项目的顺序。多ul反向订单

我的代码:

$(function() { 
    ul = $('ul'); // your parent element 
    ul.each(function(i,ul){ 
    $(this).children().each(function (i,li) { 
     alert(i);/*i got to do something here*/ 
    }); 
    }) 
}); 
+0

能否请您显示您当前的HTML,你如何指望它结束了.... – ManseUK 2012-02-09 08:57:44

+0

请把你的代码放在jsfiddle.net – Zakaria 2012-02-09 09:02:18

回答

5

这是当你有多个ul的:http://jsfiddle.net/dG373/4/

<ul> 
    <li>A</li> 
    <li>B</li> 
    <li>C</li> 
</ul> 
<ul> 
    <li>A</li> 
    <li>B</li> 
    <li>C</li> 
</ul> 

-

$('ul').each(function(){ 
    var ul = $(this); 
    ul.children().each(function(i, li){ 
     ul.prepend(li) 
    }); 
}); 
+0

谢谢!而已! – 2012-02-09 09:12:32

+0

点击分数下方的“✓”标记标记为答案) – Niklas 2012-02-09 10:32:48

+0

这是一个非常整洁的解决方案。谢谢 :) – Nick 2012-05-15 07:16:54

0

关闭我的头顶:

1)选择要扭转(如$("div.myitems")

2的顺序选择项目)调用$.makeArray上的物品变成true数组。 3)调用javascript .reverse()方法反转数组。

我从来没有这样做过,所以我不确定它是否会起作用,但它可能会给你一些建议!

1

您可以在DOM中移动的元素很容易,通过之前或其它之后将它们插入元素。当您在jQuery实例中获取一组元素时(例如,使用$(...)),您将获得一组静态的以文档顺序匹配的元素。因此,扭转他们在这一点上是刚通过匹配集循环和移动他们的事:

var list = $("selector_for_the_list"); 
var items = list.children(); 
var index; 
for (index = items.length - 1; index >= 0; --index) { 
    list.append(items[index]); 
} 

Live example