如何在jQuery选择器中定义css:hover状态?

Geo*_*rge 64 html javascript css jquery

我需要定义div的背景颜色:使用jQuery悬停,但以下似乎不起作用:

$(".myclass:hover div").css("background-color","red");
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到相同的结果?重要的是必须使用jQuery,但由于某种原因它不起作用.有什么建议?谢谢!

Sac*_*hin 77

我建议使用CSS而不是jquery(如果可能的话),否则你可以使用这样的东西

$("div.myclass").hover(function() {
  $(this).css("background-color","red")
});
Run Code Online (Sandbox Code Playgroud)

您可以根据需要更改选择器.

正如@ A.Wolff评论的那样,如果要将此悬停效果用于多个类,可以像这样使用它

$(".myclass, .myclass2").hover(function(e) { 
    $(this).css("background-color",e.type === "mouseenter"?"red":"transparent") 
})
Run Code Online (Sandbox Code Playgroud)

Js Fiddle演示

  • 我想你的意思是:`$(".myclass").hover(function(e){$(this).find('div').css("background-color",e .type ==="mouseenter" ?"红色":"透明")});` (2认同)

Rah*_*zir 22

你可以试试这个:

$(".myclass").mouseover(function() {
    $(this).find(" > div").css("background-color","red");
}).mouseout(function() {
    $(this).find(" > div").css("background-color","transparent");
});
Run Code Online (Sandbox Code Playgroud)

DEMO


arj*_*bar 14

嗯,你不能添加使用伪选择喜欢的造型:hover,:after,:nth-child,或类似的使用jQuery的任何东西.

如果你想添加一个类似的CSS规则,你必须创建一个<style>元素并将其添加:hover到它中,就像在CSS中一样.然后,您必须将该<style>元素添加到页面.

.hover如果您不能将css添加到样式表中,那么使用该函数似乎更合适,但如果您坚持可以这样做:

$('head').append('<style>.myclass:hover div {background-color : red;}</style>')

如果您想阅读有关使用javascript添加CSS的更多信息,可以查看 David Walsh的博客文章之一.


fun*_*kju 12

我知道这有一个公认的答案,但如果有人遇到这个问题,我的解决方案可能有所帮助.

我发现了这个问题,因为我有一个用例,我想单独关闭元素的悬停状态.由于在DOM中无法做到这一点,另一个好方法是在CSS中定义一个覆盖悬停状态的类.

例如,css:

.nohover:hover {
    color: black !important;
}
Run Code Online (Sandbox Code Playgroud)

然后使用jQuery:

$("#elm").addClass("nohover");
Run Code Online (Sandbox Code Playgroud)

使用此方法,您可以覆盖任意数量的DOM元素,而不会绑定大量的onHover事件.

  • 刚刚遇到了与描述相同的情况。不错的解决方案 (2认同)

Jer*_*yal 7

使用 JQueryHover在 Hover 上添加/删除类或样式:

$( "mah div" ).hover(
  function() {
    $( this ).css("background-color","red");
  }, function() {
    $( this ).css("background-color",""); //to remove property set it to ''
  }
);
Run Code Online (Sandbox Code Playgroud)