Nil*_*s_e 5 html javascript jquery
所以我想为列表中的每个元素(特别<a>
是列表项中的每个元素)添加一个类,但是一次只添加一个.我这样做是因为它们<a>
有一个CSS转换,我想让它们一次动画一个.所以item1动画,然后item2动画,然后item3动画......这是我到目前为止可以试图想出的东西.
HTML:
<ul>
<li><a>item1</a></li>
<li><a>item2</a></li>
<li><a>item3</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
jQuery的/ JS:
animateItems();
function animateItems(){
$('ul li a').each(function() {
$(this).addClass('animate'); //This doesn't run one at a time
});
}
Run Code Online (Sandbox Code Playgroud)
我觉得这是导致递归的方向,但不确定.
更新:我刚刚意识到这可能比我想象的更难,因为jQuery需要知道css转换时间不是吗?有没有办法用setTimeout()添加类,直到它开始下一个addClass()?each()是否创建了一个可以迭代的数组或jQuery对象?
你可以使用这个setTimeout
功能:
$('ul li a').each(function(i, el) {
setTimeout(function() {
$(el).addClass('...');
}, i * 1000);
});
Run Code Online (Sandbox Code Playgroud)
上面的代码假设CSS动画持续时间是1秒.你可以相应地改变它!
并且注意:this
在setTimeout
回调函数的上下文中没有引用当前元素.您应该缓存回调的this
对象,each
或者使用回调的第二个参数,该参数each
引用集合中的当前元素.
归档时间: |
|
查看次数: |
2218 次 |
最近记录: |