1

我有两个DIV元素。
在里面DIV_1我希望在被调用时显示某些图像,DIV_2我会有很多LINKS

当每个人LINK悬停DIV 2,我希望与链接相关的图像出现在 中,如果另一个人悬停,则更改为另一张图片,但当鼠标箭头未悬停在特定的.DIV 1LINKLINK

Javascript

function showIt(imgsrc) 
{
    document.getElementById('bottle').src=imgsrc;
    document.getElementById('bottle').style.display='block';
}

function hideIt()
{
    document.getElementById('bottle').style.display='none';
}
4

4 回答 4

2

将此代码添加到您的链接:

<a href="#" onmouseover="showIt('some_image.jpg')" onmouseout="hideIt()" >...</a>

然而它看起来不会很漂亮。考虑使用 jQuery。

编辑:

使用 jQuery 你可以这样做:

HTML:

<a href="#" data-src="some.jpg" class="changeImage" >...</a>
<a href="#" data-src="another.jpg" class="changeImage" >...</a>
...
<img class="bottle" />

JavaScript

$(function(){
  $('.changeImage').hover(function(){
         $('.bottle').attr('src',$(this).attr('data-src'));
         $('.bottle').show();
     },
     function(){
         $('.bottle').hide();
     });

})

您可以通过将动画时间作为参数提供给 show() 和 hide() 来调整动画速度。放置在标签的 data-src 属性中的图像的 URL。

于 2012-09-07T19:52:35.887 回答
0

您可能考虑的另一种方法是background-image在 CSS 中设置属性,然后添加:hover伪类以更改为新图像,从而使您完全不必处理 Javascript。

使用该transition属性,您甚至可以在两个图像之间添加淡入淡出,而无需您做任何额外的工作,或者需要包含另一个库,如 jQuery。

于 2012-09-07T19:59:06.590 回答
0

这里有一些你可以使用的简单 jQuery:

$('#DIV1').delegate('a', 'mouseenter mouseleave', function (e) {
    if (e.type === "mouseenter") {
        switch ($(this).attr('href')) {
            case "#link1":   
                $('#DIV2').html('<img src="image1.jpg" />');
                break;
            case "#link2":   
                $('#DIV2').html('<img src="image2.jpg" />');
                break;
        }
    } else if (e.type === "mouseleave") {
        $('#DIV2 img').fadeOut();
    }
});
于 2012-09-07T20:00:49.220 回答
0

jsBin 演示

如果你有这样的事情:

  <div id="images">
    <img src="img1.jpg" alt="" />
    <img src="img2.jpg" alt="" />
    <img src="img3.jpg" alt="" />  
  </div>
  
  <ul id="links">
    <li><a href="#">Link1</a></li>
    <li><a href="#">Link2</a></li>
    <li><a href="#">Link3</a></li>
  </ul>

CSS:

#images img{position:absolute;display:none;}

比你只需要这个:

$('#links li').on('mouseenter mouseleave',function(e){
    $('#images img').stop().fadeTo(300,0);    // do on mouseenter and mouseleave
    if(e.type=='mouseenter'){                 // do just on mouseenter
        $('#images img').eq( $(this).index() ).stop().fadeTo(300,1);
    }
});
于 2012-09-07T20:01:27.000 回答