在父项悬停时更改子元素的CSS

Har*_*ody 151 css jquery parent jquery-selectors

首先,我认为这对于CSS3来说太复杂了,但是如果某个地方有解决方案的话,我很乐意改用它.

HTML非常简单.

<div class="parent">
    <div class="child">
        Text Block 1
    </div>
</div>

<div class="parent">
    <div class="child">
        Text Block 2
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

子div设置为display:none; 默认情况下,但随后更改为display:block; 当鼠标悬停在父div上时.问题是这个标记出现在我的网站上的几个地方,我只希望孩子显示如果鼠标在它的父母上面,而不是如果鼠标在任何其他父母上面(他们都有相同的类)名称和没有ID).

我已经尝试使用$(this),并.children()无济于事.

$('.parent').hover(function(){
            $(this).children('.child').css("display","block");
        }, function() {
            $(this).children('.child').css("display","none");
        });
Run Code Online (Sandbox Code Playgroud)

Ste*_*hen 238

为什么不使用CSS呢?

.parent:hover .child, .parent.hover .child { display: block; }
Run Code Online (Sandbox Code Playgroud)

然后为IE6添加JS(例如在条件注释中),它不支持:正确悬停:

jQuery('.parent').hover(function () {
    jQuery(this).addClass('hover');
}, function () {
    jQuery(this).removeClass('hover');
});
Run Code Online (Sandbox Code Playgroud)

这是一个简单的例子:小提琴

  • `:hover`是CSS2定义的"动态伪类"之一([这里是规范](http://www.w3.org/TR/CSS2/selector.html#dynamic-pseudo-classes)).这是一个简单的例子:[http://jsfiddle.net/5FLr4/](http://jsfiddle.net/5FLr4/).这个对我有用. (5认同)

Ali*_*avi 137

无需使用JavaScript或jquery,CSS就足够了:

.child{ display:none; }
.parent:hover .child{ display:block; }
Run Code Online (Sandbox Code Playgroud)

看看演示

  • +1很棒的答案!! 正是医生所要求的. (7认同)

Hus*_*ein 9

使用toggleClass().

$('.parent').hover(function(){
$(this).find('.child').toggleClass('color')
});
Run Code Online (Sandbox Code Playgroud)

color班级在哪里 您可以根据需要设置类的样式,以实现所需的行为.该示例演示了如何在鼠标进出时添加和删除类.

点击这里的工作示例.


小智 7

.parent:hover > .child {
    /*do anything with this child*/
}
Run Code Online (Sandbox Code Playgroud)


Bri*_*ica 6

不确定是否有可怕的理由这样做,但它似乎在最新版本的 Chrome/Firefox 上与我一起工作,页面上的很多元素没有任何明显的性能问题。

*:not(:hover)>.parent-hover-show{
    display:none;
}
Run Code Online (Sandbox Code Playgroud)

但通过这种方式,您所需要的只是应用于parent-hover-show一个元素,其余的都被处理了,并且您可以保留您想要的任何默认显示类型,而不必它总是“块”或为每种类型创建多个类。