我的一组图片有问题。我的目的是在您悬停缩略图时显示相关图像,并在您滚动图像时隐藏它。问题是我需要在模块设计的悬停上加上延迟(),有3列,很难到达中间列的图像。此延迟使悬停排队,显示其他与您悬停的其他拇指相关的图像。这是标记:
<ul id="module">
<li>
<a href="#">
<img src="thumbnail-image-1.jpg">
<img src="image-1.jpg">
</a>
</li>
<li>
<a href="#">
<img src="thumbnail-image-2.jpg">
<img src="image-2.jpg">
</a>
</li>
...
</ul>
这是js:
$('#module li a').each(function(i){
$_imgs = $(this).find('img');
$_imgs.eq(0).mouseover(function() {
$(this).next().delay(800).fadeIn('slow');
});
$_imgs.eq(1).mouseout(function() {
$(this).fadeOut('slow');
});
});
我认为解决方案来自于放置unbind()...... 感谢。
答案 0 :(得分:1)
使用setTimeout()
导致延迟。 setTimeout返回一个唯一ID,使用此ID可以调用clearTimeout(id)
并在mouseout上清除计时器。
答案 1 :(得分:1)
我将.tn类添加到缩略图中,但如果需要,可以将其更改为.eq解决方案。
Javascript(需要jQuery 1.7)
$(function(){
var timeout = false;
$('#module > li').on('hover', 'a', function(e){
var $elem = $(this).find('.tn');
if(e.type == 'mouseenter'){
timeout = setTimeout(function(){
$elem.fadeIn();
}, 800);
}
else{
timeout && clearTimeout(timeout);
$elem.stop().fadeOut();
}
});
});
看到它在这里工作: http://jsfiddle.net/aX836/
答案 2 :(得分:0)
试试这个:
$('#module li a').each(function(i){
var $_imgs = $(this).find('img'), timeout, $next;
$_imgs.eq(0).mouseover(function() {
clearTimeout(timeout);
$next = $(this).next();
timeout = setTimeout(function() {
$next.fadeIn('slow');
}, 800);
});
$_imgs.eq(1).mouseout(function() {
$(this).fadeOut('slow');
});
});