当鼠标悬停在图像上方时,跨度内容会在两秒后向下滑动,同时当我将光标移出图像时,在两秒跨度滑动后,这样可以正常工作。
如果有人将鼠标移动到该跨度上,我想显示跨度,并且我的问题就开始了......
我不知道我是否足够清楚,但我认为代码会告诉你的不仅仅是单词:)
链接:http://jsfiddle.net/zDd5T/3/
HTML:
<img id="image" src="button_green.png" />
<span id="content">
<a href="http://www.google.com">Link</a>
Some content here
</span>
CSS:
#image{
left:0px;
position:absolute;
z-index: 10;
}
#content{
top:48px;
left:0px;
position:absolute;
height: 100px;
border: 1px solid #f00;
display: block;
z-index: 0;
width: 100px;
}
JavaScript的:
$(document).ready(function() {
$('#content').hide();
var over_img = false;
var over_span = false;
$('#image').live('mouseover', function() {
over_img = true;
setTimeout(function() {
$('#content').show('slide', {
direction: 'up'
}, 1000);
}, 2000);
});
$('#content').live('mouseover', function() {
over_span = true;
setTimeout(function() {
$('#content').show('slide', {
direction: 'up'
}, 1000);
}, 2000);
});
$('#image').live('mouseout', function() {
over_img = false;
if (!over_img && !over_span) {
setTimeout(function() {
$('#content').hide("slide", {
direction: "up"
}, 1000);
}, 2000);
}
});
$('#content').live('mouseout', function() {
over_span = false;
if (!over_img && !over_span) {
setTimeout(function() {
$('#content').hide("slide", {
direction: "up"
}, 1000);
}, 2000);
}
});
});
提前致谢!
答案 0 :(得分:0)
如果我正确理解您的问题,我会按如下方式重新构建您的标记:
<div class="container">
<img ... >
<div class="content">
.....
</div>
</div>
然后,不是将您的悬停事件绑定到图像,而是将其绑定到父容器。这样,一旦显示内容div,它仍然在容器父元素内,其中有悬停事件绑定到它,因此当鼠标悬停在图像或内容div(或任何其他元素)上时它将保持可见在容器内)
答案 1 :(得分:0)
对于jQuery 1.7+,使用on()代替.live(),不推荐使用。
我相信这可以解决你的问题:
$(document).ready(function() {
var T1, T2;
$('#content').hide();
$('body').on({
mouseenter: function() {
clearTimeout(T2);
T1 = setTimeout(function() {
$('#content').slideDown(1000);
}, 2000);
},
mouseleave: function() {
clearTimeout(T1);
T2 = setTimeout(function() {
$('#content').slideUp(1000);
}, 2000);
}
}, '#image, #content');
});
这是FIDDLE