通过div循环,我想写一个选择器来获取uls,并为每个人做一些事情。
我的HTML(简体)如下所示:
<div class="foo">
<ul>
</ul>
<ul>
</ul>
...
</div>
<div class="foo">
<ul>
</ul>
<ul>
</ul>
...
</div>
...
之后:
variable=$(.foo);
当然可行, 现在我想做一些像
这样的事情for(var k=0;k<variable.length;k++){
variable[k].find('ul').doSomethingWithThese
}
但是选择器有点不对
即使我尝试使用简化代码,例如示例中的代码,代码也比这复杂得多,
(在我的div里面还有很多东西,我正在用map()函数构建一个循环,每个div都会提取一些内容并与其他内容连接,并在其他地方打印所有内容...)
所以请理解我不能像$(“。foo&gt; ul”)一样,即使我能理解为什么我的其他尝试失败。
我在过去3小时内尝试过每一个可以想象的变体,包括:
使用children()代替find(),使用get(0)insted [0],使用get(0)或[0]之后('ul')(至少尝试获得第一个ul),
使用$ variable,$。(变量),($。('ul')),($('ul')),使用each()而不是for循环,为所有东西创建变量,
所有上述所有可能的组合,google,stackoverflow,api.jquery.com ...
比我尝试更简化:
variable[0].children('ul')
variable[0].children('ul')[0]
以及所有变种,但仍然没有运气......
答案 0 :(得分:2)
$('.foo ul').each(function(){
//do whatever you want
})
有关jQuery each()函数的详细用法,请参阅here。
答案 1 :(得分:0)
尝试使用.each()
功能
$('.foo').each(function(){
var foo = $(this);
var uls = foo.find('ul');
});
或
$('.foo ul').each(function(){
//code...
});
或
$('.foo').each(function(){
var foo = $(this);
var uls = $('ul', foo);
});
答案 2 :(得分:0)
使用variable.each
http://api.jquery.com/jquery.each/迭代第一个选择器返回的项目。您还需要将.foo
更改为'.foo'
答案 3 :(得分:0)
当您使用variable[k]
或variable.get(k)
与JQuery对象时,它将为您提供底层DOM对象而不是jQuery对象。您可以使用.each method循环遍历每个元素,然后将其包装回jQuery对象或继续使用for循环并换行。
。每个
variable.each(function(index,element){
var jqElement = jQuery(element); //or jQuery(this);
var uls = jqElement.find("ul");
uls.each(function(index2,ulElement){
//do stuff
});
});
For Loop
for(var k=0;k<variable.length;k++){
var jqElement = jQuery(variable[k]);
var uls = jqElement.find('ul');
//etc
}
当然,您可以使用单个选择器直接获取uls
uls = jQuery(".foo ul");
uls.each(function(index,ulElement){
var jqUL = jQuery(this);
//if you need a reference to the parent .foo
var parent = jqUL.closest(".foo");
//etc do stuff
});
答案 4 :(得分:0)
jQuery返回一个像object这样的数组,它包含与你的选择器匹配的DOM元素(如果有的话)。
在你的情况下
variable=$(.foo);
相当于[<div class="foo"></div>, <div class="foo"></div> /* ... */]
因为你的for循环遍历返回的数组中的DOM元素。您可以将元素重新包装为jQuery对象,如下所示:
for(var k=0;k<variable.length;k++){
$(variable[k]).find('ul').doSomethingWithThese
}
或使用$.each
迭代您的收藏:
$.each(variable, function () {
$(this).find('ul').doSomethingWithThese
});
答案 5 :(得分:0)
<强> HTML 强>
<div class="foo">
<ul class='myClass'>
<li>list 1-1</li>
</ul>
<ul>
<li>list 1-2</li>
</ul>
<ul>
<li>list 1-3</li>
</ul>
</div>
<div class="foo">
<ul>
<li>list 2-1</li>
</ul>
<ul class='myClass'>
<li>list 2-2</li>
</ul>
<ul>
<li>list 2-3</li>
</ul>
</div>
<强>的JavaScript 强>
$('.foo ul').each(function(){
if ($(this).hasClass('myClass')){
$(this).css('background-color', 'yellow');
}
})
工作示例