我有这样的HTML代码:
<li>one</li>
<li>two</li>
<li>era</li>
<li>jeu</li>
<li>iuu</li>
<li>iij</li>
<li>emu</li>
<li>our</li>
我需要将它们平均分为2个元素(如果总数为11,则为5:6),如下所示:
<ul>
<li>one</li>
<li>two</li>
<li>era</li>
<li>jeu</li>
</ul>
<ul>
<li>iuu</li>
<li>iij</li>
<li>emu</li>
<li>our</li>
</ul>
这适用于任何数量的<li>
。你能用jQuery建议一个优雅的解决方案吗?
答案 0 :(得分:5)
var $li = $('li'),
half = Math.floor($li.length/2);
$li.filter(function(i){ return i < half; }).wrapAll('<ul>');
$li.filter(function(i){ return i >= half; }).wrapAll('<ul>');
答案 1 :(得分:2)
您可以除以2
,然后向下或向上舍入(取决于您是否需要4:5
或5:4
)。在执行此操作后,将li
替换为包含ul
的{{1}}(首先克隆它们,否则li
会被移动,并且不会能够被替换因为原来的位置丢失了。)
li
您还可以概括最后两部分:http://jsfiddle.net/TBhYX/1/。
var li = $('li'),
amount = li.length,
left = amount / 2 | 0, // '| 0' rounds down
right = amount - left;
var leftElems = li.slice(0, left);
leftElems.replaceWith($('<ul>').append(leftElems.clone(true)));
var rightElems = li.slice(left, amount);
rightElems.replaceWith($('<ul>').append(rightElems.clone(true)));
答案 2 :(得分:1)
首先,您可以使用jQuery中的.each并计算它们......
http://api.jquery.com/jQuery.each/
然后创建2 ul,然后只取其中的一半并将它们放在第一个ul中。然后在第二个......
示例代码:
<div class="take_those">
<li>One</li>
<li>Ein</li>
</div>
<ul class="first">
</ul>
<ul class="second">
</ul>
查看元素是什么样的
$(document).ready(function() {
var total_items = 0;
total_items = $(".take_those li").length;
$(".take_those li").each(function(i) {
if(i<(total_items/2)) {
$(".first").append("<li>"+$(this).html()+"</li>");
} else {
$(".second").append("<li>"+$(this).html()+"</li>");
}
});
});
或类似的......
这对你有帮助吗?