You need to enable JavaScript to run this app. 切换包含内嵌HTML元素的span文本时Font Awesome图标丢失问题求助
优惠活动
大模型
产品
解决方案
定价
更多

切换包含内嵌HTML元素的span文本时Font Awesome图标丢失问题求助

问题原因

jQuery 的 text() 方法赋值时会清空目标元素内所有子节点(包括嵌套的 <i> 标签),仅保留传入的纯文本内容。如果直接将带HTML标签的字符串传入 text(),会被当做纯文本渲染,不会解析为DOM元素。如果改用html()方法直接传入带标签的字符串虽然能渲染元素,但会频繁重写<i>节点,可能影响绑定在<i>上的CSS动画效果。

最优解决方案

只修改<span>内的纯文本节点,不触碰嵌套的<i>元素,完全保留原有DOM结构和动画绑定,修改后的JS代码如下:

$('.button').click(function() {
    // 切换图标类,原有逻辑无需改动
    $('.button i').toggleClass('fa-angle-up fa-angle-down');
    // 仅修改span下第一个文本节点的内容
    const textNode = $('.button span').contents().first()[0];
    textNode.nodeValue = textNode.nodeValue.trim() === 'View More' ? 'View Less' : 'View More';
});

备选方案(无动画影响场景可用)

如果你的CSS动画不受DOM节点重写影响,也可以直接用html()方法替换整段内容:

$('.button').click(function() {
    const $span = $('.button span');
    $span.html($span.text().trim() === 'View More' 
        ? 'View Less<i class="fas fa-angle-up"></i>' 
        : 'View More<i class="fas fa-angle-down"></i>'
    );
});

内容的提问来源于stack exchange,提问作者Katarina Perović

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 19:15:03