这是我的元素,我想通过循环来排列里面的子元素。
<div id="animDummy1">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
下面是我想象的代码应该是什么样子的,但是当然,should ()不会返回一个包含孩子的数组
var children=$('#animDummy1').children();
for(var i=0;i<children.length;i++){
children[i].css('left',i*120+'px');
}
问题--我能得到一个循环中使用的子数组吗?我知道我可以为每个孩子附加一个要执行的函数,但是我可以在其中增加"i“吗?
Thnx。
发布于 2012-02-06 02:23:15
children()
返回子对象的jQuery对象,该对象类似于DOM节点数组。您的问题出在循环内部--当您使用[]
访问单个对象时,您会得到没有css
方法的普通DOM节点。使用.eq(i)
或$(children[i])
。
或者直接使用each()方法,该方法允许您执行相同的操作,而不必手动编写for循环。阅读文档以了解如何在回调中获取元素的索引。
发布于 2012-02-06 02:23:07
这才是正确的方法。
var children=$('#animDummy1').children();
children.each(function(idx, val){
$(this).css('left',idx*120+'px');
});
或者实际上这样更好。
$('#animDummy1').children().each(function(idx, val){
$(this).css('left',idx*120+'px');
})
发布于 2012-02-06 02:28:33
children()
返回一组jQuery对象,children[i(anyNumber)]
将返回dom元素。因此,在dom元素上调用css
jQuery方法会导致错误。如果要访问给定索引处的任何特定元素,则应使用eq
方法。尝尝这个。
var children = $('#animDummy1').children();
for(var i = 0;i < children.length;i++){
children.eq(i).css('left', (i*120+'px') );
}
.eq()
参考:http://api.jquery.com/eq/
https://stackoverflow.com/questions/9151729
复制相似问题