首先,我认为这对于CSS3来说太复杂了,但是如果某个地方有解决方案的话,我很乐意改用它 .
HTML非常简单 .
<div class="parent">
<div class="child">
Text Block 1
</div>
</div>
<div class="parent">
<div class="child">
Text Block 2
</div>
</div>
子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");
});
9 回答
为什么不使用CSS呢?
然后为IE6添加JS(例如在条件注释中),它不支持:正确悬停:
这是一个简单的例子:Fiddle
无需使用JavaScript或jquery,CSS就足够了:
SEE DEMO
使用
toggleClass()
.其中
color
是该类 . 您可以根据需要设置类的样式,以实现所需的行为 . 该示例演示了如何在鼠标进出时添加和删除类 .点击此处查看工作示例 .
我认为这是一个更好的解决方案,因为它可以扩展到更多级别,尽可能多,不仅仅是两个或三个 .
我使用边框,但也可以使用想要的样式,如背景颜色 .
有了边界,这个想法是:
您可以在以下位置进行测试:http://jsbin.com/ubiyo3/13
以下是代码:
Stephen's answer是正确的,但这是我对他的答案的改编:
HTML
CSS
jQuery
你可以看到这个例子working over at jsFiddle .
如果您正在使用Twitter Bootstrap样式并将JS作为下拉菜单:
这是创建粘性下拉列表的缺失部分(这并不烦人)
行为是:
单击时保持打开状态,再次单击页面上的任何其他位置时关闭
当鼠标滚出菜单元素时自动关闭 .
要从css更改它,您甚至不需要设置子类
不确定是否有可靠的理由这样做,但它似乎与我一起使用最新版本的Chrome / Firefox,没有任何明显的性能问题,页面上有很多元素 .
但是这样,你需要的只是将
parent-hover-show
应用于一个元素,剩下的就被处理了,你可以保留你想要的任何默认显示类型,而不必始终为"block"或为每种类型创建多个类 .