我正在尝试访问嵌套循环中的元素。 我使用$(this)访问第一个循环的循环元素就好了,但是使用$(this)无法访问secnod元素。 如何访问第二个元素?
$('.buttons').each(function(){
width = 100 / $(this).length;
$(this).each(function () {
$(this).width = width + '%';
});
});
上面的代码设置了第一个循环的第一个循环元素,而不是内部循环元素。
答案 0 :(得分:3)
根据您的评论,您尝试使用按钮访问每个班级中的子div。
$('.buttons').each(function(){
var children = $(this).find('div'), width = 100 / children.length;
children.each(function () {
$(this).width(width + '%');
});
});
答案 1 :(得分:1)
假设您的标记看起来像这样:
<div class="buttons">
<div class="button"></div>
<div class="button"></div>
<div class="button"></div>
<div class="button"></div>
</div>
我相信这就是你要找的东西,它会均匀地设置每个按钮的宽度,使它们加起来达到100%;
$('.buttons').each(function(){
var $buttons = $(this).find('.button');
var width = 100 / $buttons.length;
$buttons.width(width+'%');
});
<强> Demo fiddle 强>
答案 2 :(得分:0)
“this”始终是每个循环上下文中的迭代器。因此,要引用外环的迭代器,必须将其引用赋值给变量。
$('.buttons').each(function(){
var jqOuterThis = $(this);
var outerWidth = 100 / $(this).length;
$(jqOuterThis).each(function () {
$(jqOuterThis).width(outerWidth + '%');
});
});
答案 3 :(得分:0)
另一种方法是利用“每个”的参数。
$('.buttons').each(function(i, element) { ... });
这样你就可以在任何进一步的嵌套中使用$(元素)(除非在以后的使用中用相同的参数名覆盖)。
“i”是迭代器变量。如果它在第3个找到的元素上,我将是2,第4个将是3,等等。