2010-02-12 121 views
2

我有,当你将鼠标悬停在某个图像显示一个div:的jQuery DIV闪烁

$('#link-test-img').mouseenter(function() { 
     $('#popup-test').css('display','block'); 
    }); 
    $('#link-test-img').mouseleave(function() { 
     $('#popup-test').css('display','none'); 
    }); 

当然鼠标离开只是调用,以股利不可见当鼠标离开图像,不而它的移动呢?

谢谢。

回答

4

如果弹出窗口显示在鼠标下,img将调用mouseleave函数。确保您的弹出窗口不会在鼠标下直接显示

编辑:

$('#link-test-img').mouseenter(function() { 
    $('#popup-test').css('display','block'); 
}); 

$('#popup-test').mouseleave(function() { 
    $('#popup-test').css('display','none'); 
}); 

阿卡,让它显示出来,当你进入的形象,但是当你离开弹出消失。

+0

谢谢你是对的。但它不能解决问题。我需要div在它占据图像区域时仍然出现。 – wahkal 2010-02-12 16:18:29

+0

在那里,我添加了一个* should *的编辑。当然,我看不到你的HTML布局或类似的东西,所以我不能保证任何东西。 – 2010-02-12 16:24:15

0

John Gietzen给出了很好的建议。让我详细说一下。如果你的#popup-test div显示在鼠标下,mouseleave事件将会触发#link-test-img。

现在,如果#popup-test div本身就是一个图像,并且意在替换被蒙住的图像,则可以使用IMG元素background-image的一个很少使用的CSS属性。在这种情况下,您可以创建一个透明的PNG(即,透明度为0的透明PNG,以便所有内容都可以透过它显示)到第一个图像的尺寸,然后分配PNG的背景图像样式,即我们将在这里调用clear.png,并为#link-test-img的源URL指定一个“clear01”的ID。

在CSS中,您将设置样式规则

background-image: url(http://your.link-test-img.url); 

在Javascript中,你会这样设置:

document.getElementById("clear01").style.backgroundImage = "url(http://your.link-test-img.url)"; 

在jQuery中你会说:

$('#clear01').mouseenter(function() { 
    $('#link-test-img').css('background-image','url(http://your.link-test-img.url)'); 
}); 
$('#clear01').mouseleave(function() { 
    $('#link-test-img').css('background-image','url(http://your.popup-test-img.url)'); 
}); 

你在所有这些事件发生时不必经历大量的旋转和失败。但是,正如我上面提到的,这只有在弹出测试div仅用于显示不同图像时才有效。如果它显示不同的内容,并在鼠标下弹出,请不要将mouseleave函数事件处理程序分配给第一个图像。相反,它分配给弹出测试DIV,你有上述相同的代码,像这样:

$('#link-test-img').mouseenter(function() { 
    $('#popup-test').css('display','block'); 
}); 
$('#popup-test').mouseleave(function() { 
    $('#popup-test').css('display','none'); 
}); 

如果DIV没有鼠标,即下弹出,这是越来越别处页面上显示,并且您希望原始link-test-img保持在视图中,而这不会发生,您还有其他问题。在这种情况下,如果您可以提供更多的代码或指向页面,您可以获得更详细的帮助。

希望这会有所帮助。