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

如何使用jQuery实现hover效果并在登录后隐藏登录面板

问题修复方案

现有代码核心问题

  • 逻辑冲突:mouseover事件中if判断后额外执行了$('.login').show(),无论是否登录最终都会强制显示登录面板,是你遇到display:block无法隐藏的直接原因
  • 选择器错误:事件绑定的myAccount缺少类选择器前缀.,导致个人中心区域事件绑定失效
  • 状态切换不及时:登录成功后仅新增了标记元素,没有立刻切换面板显示状态,需要等待下次mouseover触发才会更新
  • 查询效率低:jQuery('div').hasClass('appendme')会遍历页面所有div元素,性能消耗不必要

修复后完整代码

JavaScript 代码

$(document).ready(function(){
  // 页面初始化校验登录状态(可选,实现刷新后保留登录态)
  if (localStorage.getItem('isLogin') === 'true') {
    $('.login').hide();
    $('.myAccount').show();
  }

  // 登录按钮点击逻辑
  $(".login-user").click(function () {
    $("#container").append('<div class="appendme">User Login Success</div>');
    // 存储登录状态到本地存储(可选)
    localStorage.setItem('isLogin', 'true');
    // 登录成功立即切换面板显示
    $('.login').hide();
    $('.myAccount').show();
  });

  // 补全.myAccount的类选择器前缀
  $('#btn , .login, .myAccount').mouseover(function(){ 
    // 直接判断登录标记是否存在
    if ($('.appendme').length > 0 || localStorage.getItem('isLogin') === 'true') {
      $('.login').hide();
      $('.myAccount').show();
    } else {
      // 仅未登录状态下显示登录面板
      $('.login').show();
    }
  }).mouseout(function(){     
    // 鼠标移出后隐藏所有面板
    $('.login, .myAccount').hide();
  });    
});

CSS和HTML代码无需修改,保持原有内容即可。

实现效果

  • 初始未登录状态:hover「My Account」按钮显示登录面板
  • 点击登录按钮后:立即隐藏登录面板,显示个人中心区域
  • 登录后hover「My Account」按钮:直接显示个人中心,不再展示登录面板
  • 可选的本地存储配置:页面刷新后仍保留登录状态,无需重复登录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:36:03