2 回答

TA贡献1863条经验 获得超2个赞
基本上,您需要使用第一段的内部文本并在第二段的锚点的内部文本中工作,因此您需要相应地更改您使用的选择器。.text()粘合所有匹配标签的内部文本,这是粘合文本的原因。这意味着.text()需要在已更改选择器的循环上$(this)的回调中调用它。function我只需要对你的 JS 代码做一些细微的改动,但细微的改动很重要:
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(){
$('.one p, .two p a').each(function() {
var letters = $(this).text();
var nHTML = '';
for(var letter of letters) {
nHTML+="<span class='x'>"+letter+"</span>";
}
$(this).html(nHTML);
$(".x").hover(function(e) {
if (e.type === "mouseenter") $(this).text(nextLetter($(this).text()));
});
})});
小提琴:https ://jsfiddle.net/4e20tpku/
在这里,我假设您也希望能够在第二段的第二个链接中更改 vimeo 的字母。如果这个假设不正确,则需要对我一直使用的选择器进行轻微更改。

TA贡献1780条经验 获得超1个赞
你可能想要这样的东西:
$(document).ready(function() {
var paragraphs = $('p'); // select all paragraphs
paragraphs.each(function() { // loop over them
var letters = $(this).text(); // $(this) accesses the current loop item
var nHTML = '';
for (var letter of letters) {
nHTML += "<span class='x'>" + letter + "</span>";
}
$(this).html(nHTML);
});
$(".x").hover(function(e) {
if (e.type === "mouseenter") $(this).text(nextLetter($(this).text()));
});
})
添加回答
举报