如何在悬停时更改文本中的字母

How to change the letters in a text on hover

我正在寻找一种方法来在您将鼠标悬停在文本中时更改它们。 在那之后,他们最终不会恢复正常并保持变化。 所以我找到了一个代码来更改文本中每个字母的颜色,但我正在寻找选择字母表中下一个字母的相同内容。

非常感谢您的帮助。

$(document).ready(function(){
  var letters = $('p').text();
  var nHTML = '';
  for(var letter of letters) {
    nHTML+="<span class='x'>"+letter+"</span>";
  }
  $('p').html(nHTML);
})
.x:hover {
  color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<p>Hello World!</p>

我还发现这段代码可以让您更改带有 ID 的文本。 我只是不知道如何将它分别应用到我的所有角色。

const $foo = $('#foo');

$foo.hover(function(){
  $foo.text('Blah');
}, function(){
  $foo.text('Foo');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<nav>
  <li><a href="#0" id="foo">Foo</a></li>
</nav>

此外,我有这个脚本可以找到下一个字母。

function LetterChanges(str) {
    var result = "";
    for (var i = 0; i < str.length; i++) {
        if (122 == str.charCodeAt(i)) {
            result += "a";
        } else if (90 == str.charCodeAt(i)) {
            result += "A";
        } else if ((65 <= str.charCodeAt(i) && str.charCodeAt(i) <= 89) || (97 <= str.charCodeAt(i) && str.charCodeAt(i) <= 121)) {
            result += String.fromCharCode(str.charCodeAt(i) + 1);
        } else {
            result += str.charAt(i);
        }
    }
    return result;
}

console.log(LetterChanges("AaZz+cod!foo"));
$('#result').html(LetterChanges("paul & rémi"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h1 id="result"></h1>

如果我了解您的需求,那么这就是解决方案:

function nextLetter(ch) {
    if (!ch.match(/[a-z]/i)) return ch;
    else if (ch === 'Z') return 'A';
    else if (ch === 'z') return 'a';
    return String.fromCharCode(ch.charCodeAt(0) + 1);
}
$(document).ready(function(){
  var letters = $('p').text();
  var nHTML = '';
  for(var letter of letters) {
    nHTML+="<span class='x'>"+letter+"</span>";
  }
  $('p').html(nHTML);
  $(".x").hover(function(e) {
    if (e.type === "mouseenter") $(this).text(nextLetter($(this).text()));
  });
})

解释:

  • 下一封信
    • 检查它是否是字母,如果不是字母则什么也不做
    • 如果是 Z 或 z,则将重新开始字母表,保持大小写
    • 否则找到下一个字母
  • for 循环创建包含单个字母的跨度,具有 x
  • 的 class
  • 这就是 CSS hover 规则有效的原因
  • 我们可以创建 Javascript/jQuery 个事件
  • 我创建了一个 Javascript 事件,它在鼠标悬停时将字母更改为下一个字母

Fiddle: https://jsfiddle.net/1ar8uL4s/