Div 图标鼠标移出后消失
Div disappear after icon mouseout
我从事电子商务工作,header 中有一个购物车图标。问题是我的 div 和购物车内容在我可以放置鼠标之前就消失了,点击产品 link 或结帐按钮。
我需要什么:当鼠标悬停在购物车图标或购物车内容上时,我必须能够与我的购物车内容进行交互。
我有以下代码,其中 class .cart-label
是我的购物车图标,#panel
是我的购物车内容。
$k('.cart-label').hover(function() {
$k('.header-cart #panel').stop().fadeIn('fast');
},
function() {
$k('.header-cart #panel').stop().fadeOut('fast');
});
我做错了什么??
您需要将购物车图标和购物车菜单包裹在同一个 div 中。然后你只在包装器的 mouseleave
事件上调用 hide()
。
$('.cartIcon').mouseover(function(){
$('.cartInner').show();
});
$('.cartWrapper').mouseleave(function(){
$('.cartInner').hide();
});
.cartWrapper .cartIcon {
height: 50px;
width: 100px;
background: green;
}
.cartWrapper .cartInner {
display: none;
height:200px;
width:100px;
background: blue;
}
.cartWrapper {
width: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="cartWrapper">
<div class="cartIcon">
Cart icon
</div>
<div class="cartInner">
Cart inner
</div>
</div>
考虑到您的代码,我唯一能想到的是您的 div 过度重叠了您调用的事件 div。检查 .hover 事件元素是否与隐藏元素重叠。将边框应用到 div 并检查鼠标悬停会影响两个 divs.
为了更好地理解更新其余代码
我对这种场景的建议你可以使用mouseover() and mouseout()
.mouseover() 与 .hover() 不同,原因与 .mouseover() 与 .mouseenter() 不同。
$('selector').mouseover(over_function) // may fire multiple times
// enter and exit functions only called once per element per entry and exit
$('selector').hover(enter_function, exit_function)
尝试使用下面的代码
$('.header-cart #panel').mouseover(function() {
//action when mouse over
}
$('.header-cart #panel').mouseout(function() {
//action when mouse out
}
我从事电子商务工作,header 中有一个购物车图标。问题是我的 div 和购物车内容在我可以放置鼠标之前就消失了,点击产品 link 或结帐按钮。
我需要什么:当鼠标悬停在购物车图标或购物车内容上时,我必须能够与我的购物车内容进行交互。
我有以下代码,其中 class .cart-label
是我的购物车图标,#panel
是我的购物车内容。
$k('.cart-label').hover(function() {
$k('.header-cart #panel').stop().fadeIn('fast');
},
function() {
$k('.header-cart #panel').stop().fadeOut('fast');
});
我做错了什么??
您需要将购物车图标和购物车菜单包裹在同一个 div 中。然后你只在包装器的 mouseleave
事件上调用 hide()
。
$('.cartIcon').mouseover(function(){
$('.cartInner').show();
});
$('.cartWrapper').mouseleave(function(){
$('.cartInner').hide();
});
.cartWrapper .cartIcon {
height: 50px;
width: 100px;
background: green;
}
.cartWrapper .cartInner {
display: none;
height:200px;
width:100px;
background: blue;
}
.cartWrapper {
width: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="cartWrapper">
<div class="cartIcon">
Cart icon
</div>
<div class="cartInner">
Cart inner
</div>
</div>
考虑到您的代码,我唯一能想到的是您的 div 过度重叠了您调用的事件 div。检查 .hover 事件元素是否与隐藏元素重叠。将边框应用到 div 并检查鼠标悬停会影响两个 divs.
为了更好地理解更新其余代码
我对这种场景的建议你可以使用mouseover() and mouseout()
.mouseover() 与 .hover() 不同,原因与 .mouseover() 与 .mouseenter() 不同。
$('selector').mouseover(over_function) // may fire multiple times
// enter and exit functions only called once per element per entry and exit
$('selector').hover(enter_function, exit_function)
尝试使用下面的代码
$('.header-cart #panel').mouseover(function() {
//action when mouse over
}
$('.header-cart #panel').mouseout(function() {
//action when mouse out
}