function setulwidth(){
var channels=$(".mainchannel").children(".channel");
for(var i=0;i<channels.length;i++){
var uls=channels[i].children("ul")
for(var j=0;j<uls.length;j++){
var linum=0;
var lis=uls[j].children("li");
for(var k=0;k<lis.length;k++){
linum++;
}
uls[i].css("width",linum*360);
}
}
}
我的html里面有一个class为mainchannel的div,这个div里面有N个class为channel的div,
channel的div里面有一个ul里面有数量不定的li,现在我就是要取li数量,我这代码里面有什么不对,
求解?
jquery的 length 属性用以获取包含 jQuery 对象中元素的数目:
$(".a .b li").length; // a类后代b类中包含的li元素的数量综合示例如下:
创建Html元素
<div class="box">设置css样式
div.box{width:300px;padding:20px;margin:20px;border:4px dashed #ccc;}编写jquery代码
$(function(){观察效果
错误在于,要取得channels中的一条数据的时候,不能用channels[i],要用channels.eq(i),下面的uls也是。
最下面那句,uls[i].css("width",linum*360); 中,不应该是参数i吧,我觉得应该是j。
这样可以保证给div下的每个ul的宽度赋值。
代码:
function setulwidth(){
var channels=$(".mainchannel").children(".channel");
for(var i=0;i<channels.length;i++){
var uls=channels.eq(i).children("ul");
for(var j=0;j<uls.length;j++){
var linum=0;
var lis=uls.eq(j).children("li");
for(var k=0;k<lis.length;k++){
linum++;
}
uls.eq(j).css("width",linum*2);
}
}
}
注:我这里把基数360改成了2
本回答被提问者采纳