我想不通这个。有没有办法使用 JQuery 在特定标签的第一个字母周围插入 HTML 标签?
例如我有这个:
<h1>Heading</h1>
但我需要这个:
<h1><span>H</span>eading</h1>
当我将鼠标悬停在标签上时,我想在标签的第一个字母上创建一个 CSS 动画。
h1:hover:first-letter似乎根本不支持 CSS 。<span>用似乎是我最好的选择来定位它。可悲的是,将其<span>直接插入 HTML 不是一种选择。
谢谢,
马特
我想不通这个。有没有办法使用 JQuery 在特定标签的第一个字母周围插入 HTML 标签?
例如我有这个:
<h1>Heading</h1>
但我需要这个:
<h1><span>H</span>eading</h1>
当我将鼠标悬停在标签上时,我想在标签的第一个字母上创建一个 CSS 动画。
h1:hover:first-letter似乎根本不支持 CSS 。<span>用似乎是我最好的选择来定位它。可悲的是,将其<span>直接插入 HTML 不是一种选择。
谢谢,
马特
var t = $('h1').text();
$('h1').html('<span>'+t.substring(0,1)+'</span>'+t.substring(1));
编辑:根据您的评论,将代码分解为一个函数并将其应用于每个元素(我还使该函数更具动态性,因此您可以将第一个字符包装在您想要的任何内容中)。
$('#main-nav li').each(function() {
wrap_first_character(this, $('<span>'));
});
function wrap_first_character(ele, tag) {
var t = $(ele).text();
$(ele).append(tag.html(t.substring(0,1))).append(t.substring(1));
}
你也可以反过来做,用另一个元素包裹你<h1>(悬停在上面),然后使用 CSS 来定位<h1>自身的第一个字母。这样可以避免字符串操作,并替换标题的全部内容:
JS
$('h1').wrap('<div>');
CSS
div:hover h1:first-letter { color: red; }