Jquery 循环通过多个ul列表
我有多个Jquery 循环通过多个ul列表,jquery,loops,Jquery,Loops,我有多个列表,其中包含相同数量的元素: <ul id='first'> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> <ul id='second'> <li>5</li> <li>6</li> <li>7</li&g
列表,其中包含相同数量的
元素:
<ul id='first'>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<ul id='second'>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
</ul>
<ul id='third'>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
</ul>
一,
二,
三,
四,
五,
六,
七,
八,
九,
十,
十一,
十二,
我想首先得到每个
(1,5,9)的第一个
元素,然后是第二个元素(2,6,10),依此类推
我知道我可以通过$('#第一个li')获得
的所有元素。每个(…)
。是否有类似的命令按上述顺序获取
元素?您可以使用(或)方法和方法
// iterate ove li elements
$('#first li').each(function(i) {
console.log(
// get text from li
$(this).text(),
// get li from second based on index and get text
$('#second li').eq(i).text(), // you can also use `$('#second li:eq(' + i + ')')`
// get li from third based on index and get text
$('#third li').eq(i).text());
});
//迭代li元素
$(#第一个li')。每个(函数(i){
console.log(
//从李那里获取文本
$(this).text(),
//基于索引从第二个获取li并获取文本
$('#second li').eq(i).text(),
//根据索引从第三方获取li并获取文本
$('#third li').eq(i).text();
});代码>
- 一,
- 二,
- 三,
- 四,
五,
六,
七,
八,
九,
十,
十一,
十二,
我会成功的
jQuery可能有.child()
方法用于直接子对象,我不记得了
更口头的是:
$('#full .first .selector, #second .full .selector, .etc');
由于jQuery接受了所有数量的CSS选择器,但随着选择器数量的增加,它的可读性可能会越来越差,但您始终可以先构建它。您必须使用:eq
在列表中查找必要的元素
$(文档).ready(函数(){
var uls=$(“ul”);
//获取所有uls中lis的长度
变量长度=$.map(uls,函数(ul){
返回$(ul).find('li').length;
});
//获取最大长度以对其进行迭代。
var maxLen=Math.max.apply(null,长度);
//在maxLen上循环并获得li的值
对于(var i=0;i获取max li子级的计数,然后相应地迭代
var count=0;
$("ul").each(function(){
var num = $(this).children("li").length;
if(num > count)
{
count = num;
}
});
for (var i=1 ; i<=count ; i++)
{
$("ul").each(function(){
alert($(this).children().eq(i).text());
});
}
var计数=0;
$(“ul”)。每个(函数(){
var num=$(this).children(“li”).length;
如果(数值>计数)
{
计数=num;
}
});
对于(var i=1;如果任何ul
以后有超过4个li
@Rajesh:我刚刚为这个问题添加了答案……我有多个列表,包含相同数量的- 元素:只是一个问题。
li:eq(2)
会不会比更好。find('li')。eq(2)
?我的意思是第二种方法将获取所有li
s,然后过滤掉第二个元素。@Rajesh::eq()
是一个jQuery伪类选择器……不是css选择器……它是在jQuery库中定义的……因此我认为两者在内部的工作方式相同:)不确定……如需更多信息,请查看图书馆。这将只提供第一个li。请阅读OP的要求。另外,$('ul')。查找('li:first'))
就可以了。不需要$。每个
@Rajesh:哦,是的,我没有注意到,谢谢。更正了代码。嗨。你能解释为什么不是每个循环,或者在每个循环上使用map的优点吗。只要问两个都可以。实际上,你计算最大长度的方法更好,但我这样做只是为了以防万一我们需要所有长度。@yoyoyo谢谢。此外,为了便于参考,请勾选此项。与此问题无关,只需比较Math.max.apply
vsfor
var count=0;
$("ul").each(function(){
var num = $(this).children("li").length;
if(num > count)
{
count = num;
}
});
for (var i=1 ; i<=count ; i++)
{
$("ul").each(function(){
alert($(this).children().eq(i).text());
});
}