克隆<li>并使用jQuery抛出</li>

时间:2011-06-24 23:38:18

标签: javascript jquery html css html-lists

我们有:

<ul>
<li>...</li>
<li>...</li>
<li>...</li>
<li>...</li>
<li>...</li>
<li>...</li>
<li>...</li>
<li>...</li>
<li>...</li>
</ul>

如何获取此列表的后半部分并在第一个<li>之前移动它?

5 个答案:

答案 0 :(得分:8)

var ul = $('ul');
var lis = ul.children('li');

ul.prepend(lis.slice(Math.round(lis.length / 2)))

示例: http://jsfiddle.net/8SNGn/

首先使用children()[docs]方法缓存<ul>元素及其<li>个子元素。

然后,它使用prepend()[docs]方法将最后li个元素添加到ul的开头。

您可以使用slice()[docs]方法获取最后一个,并将li元素的总数除以2(当您有奇数时使用Math.round()向上舍入)。


修改

我刚注意到你的问题标题中有“clone”这个词。

问题的其余部分似乎没有暗示,但如果你真的想克隆下半部分,你可以使用clone()[docs]方法。

var ul = $('ul');
var lis = ul.find('li');

ul.prepend(lis.slice(Math.round(lis.length / 2)).clone())

示例: http://jsfiddle.net/8SNGn/1/

如果您想要将舍入方向转向另一个方向,则可以使用Math.floor()代替Math.round

答案 1 :(得分:1)

var items = $("ul li");
items.filter(function(index) {
    return index > items.length / 2;
}).prependTo($("ul")[0]);

应该工作。

答案 2 :(得分:1)

var len = $('li').length - 1;

for(var i = 0; i < len/2; i++){
    var $li = $('li').eq(len);
    $('ul').prepend($li);

}

样本: http://jsfiddle.net/NiceGuy4263/Ws5ZK/

答案 3 :(得分:0)

答案 4 :(得分:0)

查看jQuery的.slice()过滤器:

http://api.jquery.com/slice