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保持在视图中,而这不会发生,您还有其他问题。在这种情况下,如果您可以提供更多的代码或指向页面,您可以获得更详细的帮助。
希望这会有所帮助。
谢谢你是对的。但它不能解决问题。我需要div在它占据图像区域时仍然出现。 – wahkal 2010-02-12 16:18:29
在那里,我添加了一个* should *的编辑。当然,我看不到你的HTML布局或类似的东西,所以我不能保证任何东西。 – 2010-02-12 16:24:15