You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery鼠标事件触发时变量异常致段落颜色无法正常切换问题

问题分析与解决方案

嘿,我一眼就看出问题所在了——你每次触发mouseover/mouseleave事件时都重新读取了页面标题,这就导致如果页面标题在事件触发期间被动态修改(比如某些脚本更新了document.title),你的判断逻辑就会出错,最终鼠标移开后段落还保持红色。

核心解决思路是:只在页面初始化时获取一次页面标题,把它存在变量里复用,而不是每次事件触发都重新读取。这样我们判断的是页面加载时的原始标题,完全符合你“首页标题为home时保持红色”的需求。

原生JavaScript实现

// 初始化阶段仅获取一次页面标题,转小写避免大小写匹配问题
const currentTitle = document.title.trim().toLowerCase();

// 选中目标段落元素(根据你的实际DOM结构调整选择器)
const targetParagraph = document.querySelector('p');

targetParagraph.addEventListener('mouseover', function() {
  this.style.color = 'red';
});

targetParagraph.addEventListener('mouseleave', function() {
  // 用预先存储的标题做判断,而非实时读取document.title
  if (currentTitle !== 'home') {
    this.style.color = 'black';
  }
});

jQuery版本实现(如果你用的是jQuery)

// 同样初始化时只获取一次标题
const currentTitle = document.title.trim().toLowerCase();

$('p').mouseover(function() {
  $(this).css('color', 'red');
}).mouseleave(function() {
  if (currentTitle !== 'home') {
    $(this).css('color', 'black');
  }
});

额外提示

我加了.trim().toLowerCase()是为了避免大小写或者首尾空格导致的匹配失败(比如页面标题是Home或者HOME),如果你的标题是严格的小写home,这两步可以省略,但加上会让代码更健壮。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:22:12