【问题标题】:How to access :hover pseudo class with jQuery?如何使用 jQuery 访问 :hover 伪类?
【发布时间】:2015-03-24 18:10:58
【问题描述】:

我有一个带有悬停伪类的 CSS 类:

.nav-collapse a:hover {
   background: #DEDEDE;
   border-radius: 3px;
}

我想用 jQuery 动态更改背景颜色,即访问 CSS 类 (.nav-collapse a:hover) 并更改背景颜色。我尝试了以下方法,但不起作用:

$(".nav-collapse a:hover").css({
      "background": "#000",
      "color": "#fff",
});

访问 CSS 类的 :hover 类的正确方法是什么?

【问题讨论】:

  • :hover 是一个伪类,而不是一个伪元素。当它悬停时,您正在将样式应用于 a 元素。目前尚不清楚您要在这里做什么。您是否尝试更改在滚动事件期间悬停的 a 元素的样式?
  • 更改 CSS 类中的背景颜色 .nav-collapse a:hover
  • 事件或用例在这里完全无关紧要。目标已经很明确了。
  • @Huangism 我要求 OP 进一步解释。
  • 很公平 - 我误解了核心问题。

标签: jquery css


【解决方案1】:

如果您只是询问如何修改现有的包含动态伪类的 CSS 规则,那么 DOM 与 jQuery 交互是不可能的,因为 jQuery 处理的是 DOM 元素,而不是 CSS 规则——您需要修改而是直接文档样式表,这通常很麻烦。这适用于几乎所有动态伪类,而不仅仅是:hover

一种更优雅的方法是将新样式声明移动到具有不同类名的单独 CSS 规则中,然后根据需要将该类应用于您的元素。这将您的样式声明与您的脚本分离,完全消除了从您的脚本中修改您的样式的需要。也就是说:

.nav-collapse a:hover {
   background: #DEDEDE;
   border-radius: 3px;
}

.nav-collapse a.scrolling:hover {
   background: #000;
   color: #fff;
}

还有:

$('.nav-collapse a').addClass('scrolling');

【讨论】:

    【解决方案2】:

    是这样的:

     $(".nav-collapse > a").mouseover(function(){
            $(this).css({
              "background": "#000",
              "color": "#fff",
            });
     })
    
     $(".nav-collapse > a").mouseout(function(){
            $(this).css({
              "background": "",
              "color": "",
            });
     })
        
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="nav-collapse">
      <a href="#">link</a>
    </div>

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-08
    • 2017-11-29
    • 2014-07-13
    • 1970-01-01
    • 2023-03-08
    • 2011-09-28
    • 2015-02-12
    • 2011-03-08
    相关资源
    最近更新 更多