gpt4 book ai didi

JQuery .show().hide() 不让 CSS 悬停代码正常工作

转载 作者:行者123 更新时间:2023-12-01 07:57:31 24 4
gpt4 key购买 nike

在此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 确实表示,当您调用 .show() 时,它将恢复 CSS 属性,但不会 .hide()

documentation for .hide()说:

This is roughly equivalent to calling .css( "display", "none" ), except that the value of the display property is saved in jQuery's data cache so that display can later be restored to its initial value.

如果先 .hide() 和元素,然后 .show() 它,jQuery 将尝试恢复元素的原始显示值。但是,在您的情况下,您按 .show(x).delay(x).hide(x) 的顺序调用,其中 .hide() 是最后调用的函数它不会恢复任何值,而只是在元素上应用 .css("display", "none") (并在调用 .show() 时保存一个值)之后)。顺序很重要。

因此在这种情况下您应该使用完整的回调函数来删除显示属性。

$('.product').on('click', function(){
$('.drawer').html("Something in your basket")
.show(200).delay(500).hide(200, function() {
$(this).css("display", "");
});
});

it should work fine now .

关于JQuery .show().hide() 不让 CSS 悬停代码正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23111762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com