我想让一个文本改变每个字母的颜色,一次一个。例如:Hello World“H”将首先变为红色,然后是“E”,然后是“L”,依此类推。
我试着把每个字母都做成一个span,并使用jquery和一个循环。但它不起作用。
$("span").ready(function() {
var letters = $("span").length;
for (let i = 0; i <= letters; i++) {
$("span")[i].css("color", "red");
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span>H</span>
<span>E</span>
<span>L</span>
<span>L</span>
<span>O</span>
<span>, </span>
<span>W</span>
<span>O</span>
<span>R</span>
<span>L</span>
<span>D</span>
4条答案
按热度按时间ldioqlga1#
在jQuery中,有一个函数
each
,它允许在选择器所有元素上循环要在两次颜色更改之间“等待”,可以将css更改嵌入到each循环索引的
setTimeout
链接中9rbhqvlz2#
您的思路是正确的,但是您需要将
color
的更改延迟一段时间(比如100ms
),以便可以看到效果。为了有一个延迟,使用方法setTimeout
,它接受2参数:1.一个回调函数,当所需的延迟已经过去时调用。
1.所需延迟(例如
100ms
)。当选择延迟时,比如
100ms
,我们应该将其乘以当前字母的索引(准确地说是当前span
),以便可以看到效果。下面是一个Live Demo:
jQuery
.each
方法用于循环遍历选定的span
元素3phpmpom3#
htrmnn0y4#
你必须使用
eq()
函数,因为你不能在dom元素上使用jquery函数,使用eq你返回一个jquery元素。但更好的解决方案是使用jquery的
each
。