使用jquery淡入淡出隐藏的div
我试图在鼠标悬停时淡入淡出几个隐藏的div,但似乎发生的是div会闪烁而不是淡入淡出 最初创建div时,div是隐藏的:使用jquery淡入淡出隐藏的div,jquery,hidden,fadein,fadeout,Jquery,Hidden,Fadein,Fadeout,我试图在鼠标悬停时淡入淡出几个隐藏的div,但似乎发生的是div会闪烁而不是淡入淡出 最初创建div时,div是隐藏的: $(container).find('.myDiv').hide(); 然后我有两个函数,如下所示: function showDivs(container) { $(container).find('.myDiv').fadeIn('slow'); } function hideDivs(bucketContainer) { $(container
$(container).find('.myDiv').hide();
然后我有两个函数,如下所示:
function showDivs(container) {
$(container).find('.myDiv').fadeIn('slow');
}
function hideDivs(bucketContainer) {
$(container).find('.myDiv').fadeOut();
}
$('.container').live('mouseover', function() {
showDivs(this);
});
$('.container').live('mouseout', function() {
hideDivs(this);
});
这一切加起来如下:
function showDivs(container) {
$(container).find('.myDiv').fadeIn('slow');
}
function hideDivs(bucketContainer) {
$(container).find('.myDiv').fadeOut();
}
$('.container').live('mouseover', function() {
showDivs(this);
});
$('.container').live('mouseout', function() {
hideDivs(this);
});
如何消除这种奇怪的闪烁效应?你能试试
鼠标移动器/mouseleave
而不是鼠标移动器/mouseover
?我猜你是在执行“活动”块
$('.container').live('mouseover', function() {
showDivs(this);
});
$('.container').live('mouseout', function() {
hideDivs(this);
});
不止一次
如果这样做,就会在DOM对象上添加许多mouseover、mouseout事件,因为jQuery不是在替换活动绑定,而是在堆叠它们
例如,如果你无意中运行了10次活动块,那么每次鼠标悬停,你的活动块('mouseover')。。。将被呼叫10次
这可能看起来像在闪烁:-)jQuery API:
mouseover/mouseout事件类型会由于事件冒泡而导致许多麻烦。例如,在本例中,当鼠标指针移动到内部元素上时,将向该元素发送一个mouseover事件,然后向上滴到外部元素。这可能会在不合适的时候触发绑定的mouseover处理程序。有关有用的替代方案,请参阅讨论。请给我们一个URL以查看您的页面。请在JSFIDLE上设置此URL?谢谢大家,mouseenter和mouseleave似乎可以做到这一点。是的,mouseover、mouseout和live变得有点棘手,闪烁消失了,谢谢!