javascript - 将 css 应用于第 n 个子词

标签 javascript jquery

一个有趣的小问题...

尝试遍历段落(单词)的子项并为它们一个一个地着色。

这是一个硬编码的工作版本,在单独的元素中包含单词: http://jsfiddle.net/JjRHT/25/

使用

window.setInterval(function(){
$(".item:nth-child(1)").css("color", "#FFFFFF");
}, 1000);

只是为了展示我正在尝试的东西......显然不是要走的路!

那么 - 我可以选择段落的每个子项吗?以及如何正确地执行循环 - 延迟很小......

史蒂文

编辑:

我找到了一个 jquery plugin将文本拆分为适合 CSS 的单词:

<p class="word_split">Don't break my heart.</p>
<script>
$(document).ready(function() {
  $(".word_split").lettering('words');
});
</script>

这将生成:

<p class="word_split">
  <span class="word1">Don't</span>
  <span class="word2">break</span>
  <span class="word3">my</span>
  <span class="word4">heart.</span>
</p>

最佳答案

这里的主要问题是您不能将样式应用于段落中的单词。

如果你想给单词(而不是整个元素)上色,你必须从段落中提取单词。

这会将段落分成两部分,并为每一部分赋予不同的颜色:

var tokens = $paragraph.text().split(' ');
var i=0;
window.setInterval(function(){
       i = (i+1)%tokens.length;
       $paragraph.html( '<span class=onecolor>'+tokens.slice(0, i).join(' ')+'</span>'
           + ' <span class=othercolor>'+tokens.slice(i, tokens.length).join(' ')+'</span>');
}, 1000);​

演示:http://jsfiddle.net/CcBLr/1/


编辑:

假设你想对你的话做一些具体的事情(比如你说的,不同的延迟),你可以这样做来准备:

var tokens = $paragraph.text().split(' ');
var spans = tokens.map(function(t){return '<span>'+t+'</span>'});
$paragraph.html(spans.join(' '));
var $words = $paragraph.children('span');

$words 现在是段落单词的集合,但您可以对它们应用样式。例如:

$words.each(function(){
   var $word = $(this);
   setTimeout(
   ...

关于javascript - 将 css 应用于第 n 个子词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12368943/

相关文章:

javascript - 为什么 Date.parse() 方法适用于无效字符串 "foo 01.01.01"

javascript - 老派电视翘边效应?

javascript - 谷歌云翻译 JSON 文件

jQuery - 追加内容

javascript - jQuery:自定义水平 Accordion 宽度问题

javascript - 使用 AJAX 进行多项选择并且没有提交按钮

javascript - 使用 .getJSON 的 JSONP 返回未定义

jquery - iframe 显示 :none not working

javascript - 使用 jQuery 不检查隐藏的 td :s

javascript - 是否可以通过 css 使选择下拉列表的选项显示为 optgroup