Jquery淡出hover、don'上的所有其他榆树;在一段时间内,鼠标从所有榆树上移开之前,不要将其淡入淡出
我有一个满页的Jquery淡出hover、don'上的所有其他榆树;在一段时间内,鼠标从所有榆树上移开之前,不要将其淡入淡出,jquery,fade,Jquery,Fade,我有一个满页的文章s,它们之间有空白,用包装,我试图创造一种效果,如果你把鼠标悬停在一篇文章上,所有其他的都会淡出。这很容易做到,但当你从一篇文章转到另一篇文章时,其他的一切都会再次淡入淡出。不要让所有的文章通过离开#shell而淡入,我希望它们只在鼠标进入shell时淡入,而不是在一篇文章上500毫秒,因为shell占据了整个窗口 $('article').hover(function() { if ($('body').hasClass('hover')) { $(t
文章
s,它们之间有空白,用
包装,我试图创造一种效果,如果你把鼠标悬停在一篇文章上,所有其他的都会淡出。这很容易做到,但当你从一篇文章转到另一篇文章时,其他的一切都会再次淡入淡出。不要让所有的文章通过离开#shell
而淡入,我希望它们只在鼠标进入shell时淡入,而不是在一篇文章上500毫秒,因为shell占据了整个窗口
$('article').hover(function() {
if ($('body').hasClass('hover')) {
$(this).fadeTo(100,1);
}
else {
$('body').addClass('hover');
$('article').not(this).fadeTo(300, 0.6);
}
}, function() {
$(this).fadeTo(300,0.6);
checkandfade();
});
function checkandfade() {
setTimeout(function() {
$(document).mousemove(function(e){
if (e.target.id == 'shell' && $('body').hasClass('hover')){
$('article').stop(true,true).fadeTo(100, 1);
$('body').removeClass('hover');
}
});
},500);
};
到目前为止,这就是我所知道的,但我认为超时不起作用。。它偶尔会起作用,但大多数情况下会将其余部分淡入淡出。我是完全错了呢,还是我的代码中有一个小故障?如果您有任何想法或更简单的解决方案,我希望得到一些反馈
跟随我微弱的进步我过去也曾使用hoverIntent插件做过类似的事情(尽管是在菜单上)。这使您可以设置mouseenter和mouseleave函数,还可以指定一个超时,以确定触发它们的确切时间。您还可以将其与布尔变量检查相结合,即在超时后,在mouseenter上将某个值设置为true,在mouseleave上将该值设置为false(实际上将其延迟到以后)。然后,您可以在不同的事件函数中检查此bool,以决定是否要执行某项操作
您是否尝试过以下方法:
var timeout = 0;
$('article').hover(function() {
$(this).stop(true, true).addClass('artHovered').fadeTo(100,1);
fadeOutArticles();
}, function() {
$(this).removeClass('artHovered');
fadeOutArticles();
});
function fadeOutArticles(){
clearTimeout(timeout);
$('article').not('.artHovered').fadeTo(300,0.6, function(){
timeout = setTimeout(function(){
if($('article.artHovered').length==0){
$('article').stop(true,true).fadeTo(100, 1);
}
}, 500);
});
}
我已经更新了代码,我想这就是您试图实现的目标:)