You need to enable JavaScript to run this app. 如何用jQuery实现#intro元素悬停显示双锚点链接、移出恢复原内容
优惠活动
大模型
产品
解决方案
定价
更多

如何用jQuery实现#intro元素悬停显示双锚点链接、移出恢复原内容

原代码问题定位与修正方案
  • 原代码里写的*$("#intro").html(link && link2)*是完全不对的:JS的逻辑与运算遇到两个真值的时候,只会返回第二个值,最后页面上只会显示法语跳转链接,英语链接直接被吞了
  • 根本没存储#intro本来的介绍内容,鼠标移入把内容换成链接之后,原始内容就丢失了,移出的时候根本找不回来
  • mouseleave事件里写的show(slow, this)是无效代码:jQuery没有这种全局的show方法,传的参数也不符合动画API的规则
  • 给#intro本身加link link2类的操作毫无意义,类是加在容器上的,不是加在生成的两个标签上,对应样式根本不会生效

修正后的实现逻辑

  1. 页面刚加载完成时,先把#intro的原始HTML内容缓存到独立变量中,避免内容被替换后无法恢复
  2. 鼠标移入元素时,分别创建两个对应语言的跳转锚点,依次填充到#intro容器中替换原有内容
  3. 鼠标移出元素时,把之前缓存的原始内容重新塞回容器,配合淡入动画实现平滑过渡效果
$(function() {
  // 提前缓存#intro的原始内容
  const originalIntroContent = $("#intro").html();

  // 鼠标移入交互
  $("#intro").on("mouseenter", function() {
    // 生成英语跳转链接
    const enLink = $("<a>").attr("href", "en.html").text("Welcome!").css("margin-right", "15px");
    // 生成法语跳转链接
    const frLink = $("<a>").attr("href", "fr.html").text("Bienvenue!");
    // 替换容器内容为两个链接
    $(this).html(enLink).append(frLink);
  });

  // 鼠标移出交互
  $("#intro").on("mouseleave", function() {
    // 恢复原始内容并加淡入动画
    $(this).hide().html(originalIntroContent).fadeIn("slow");
  });
});

内容的提问来源于stack exchange,提问作者Afra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.13 01:54:09