csb*_*rne 5 jquery slice wrapall
我正在使用stackoverflow上的成员建议的一些代码,并由我调整以包装每个3列表项作为大型菜单的一部分.代码是:
var lis = $("ul > li");
for(var i = 0; i < ls.length; i+=3) {
lis.slice(i, i+3).wrapAll("<div class='new'></div>");
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这将从下一个父菜单中获取子li,以填充div中3 li的'quota'.这当然是大大搞砸了我的菜单.有关示例,请访问此处.
有没有人有任何建议如何解决这个问题?
你的问题是你的选择.由于sizzle从右到左工作,它只会查询所有LI elements具有UL element直接父级的东西(通常情况总是这样).
所以,分开你的ULs.
$('ul').each(function(){
var $lis = $(this).children('li');
for(var i = 0, len = $lis.length; i < len; i+=3){
$lis.slice(i, i+3).wrapAll("<div class='new'></div>");
}
});
Run Code Online (Sandbox Code Playgroud)