【发布时间】:2014-04-16 14:03:32
【问题描述】:
在这个jsFiddle 中,尽管 jQuery 文档说 .show() 将 CSS 属性恢复为原来的样子,但一旦调用了 .show(x).delay(x).hide(x),CSS 就会悬停代码停止工作:
Javascript:
$('.product').on('click', function(){
$('.drawer').html("Something in your basket")
.show(200).delay(500).hide(200);
});
CSS:
.drawer {
border: 1px solid black;
padding: 10px;
position: absolute;
top: 20px;
left: 0px;
display: none;
width: 200px;
}
.basket {
position: relative;
}
.basket:hover .drawer {
display: block;
}
HTML:
<div class="basket">
<a href="#">Basket</a>
<div class="drawer">No items in your basket</div>
</div>
<br/><br/><br/><br/><br/><br/>
<a href="#" class="product">Add X to basket</a>
这里发生了什么?目前我只在 Firefox 中测试过
【问题讨论】:
-
jQuery 的
.hide()和.show()会将内联 CSS 应用于您的元素,这将覆盖您的样式。一种非常丑陋的处理方法是使用!important,例如.basket:hover .drawer {display: block !important;} -
谢谢 - 但遗憾的是这会阻止 jQuery 工作
-
为什么不直接使用 jQuery 来处理悬停?
标签: jquery css hover show-hide