jquery 将鼠标悬停在图像上以交换上面 div 中的另一个图像

Posted

技术标签:

【中文标题】jquery 将鼠标悬停在图像上以交换上面 div 中的另一个图像【英文标题】:jquery mouseover an image to swap another image in the div above 【发布时间】:2012-12-25 17:09:06 【问题描述】:

我想将"-h.png"添加到< div id="swap" >中所有img src的末尾,同时将鼠标悬停/悬停在< img src="images/logo.png" />上并返回".png" mouseout

这是我所拥有的,但它不起作用:

<div id="header-wrap">
    <div id="swap">
        <img src="images/4.png"/>
        <img src="images/3.png"/>
        <img src="images/2.png"/>
        <img src="images/1.png"/>
    </div>
    <header id="header">
        <div id="site-logo"><a href="#"><img src="images/logo.png" /></a></div>
    </header>
</div><!-- /#header-wrap --> 

$(document).ready(function()      
    $('#site-logo').hover(function()     
        $('#swap img').replace('.png','-h.png');    
    ,     
    function()    
        $('#swap img').replace('-h.png','.png');     
    );
);

刚刚更新到下面...图像现在正在交换,但所有 4 个图像都交换为 /4-h.png 而不是 4-h.png、3-h.png、2-h.png 和 1-h .png

$(document).ready(function() 
    var newSrc = "";
    $('#site-logo').hover(function()
        newSrc = $('#swap img').attr('src').replace('.png','-h.png');   
        $('#swap img').attr('src', newSrc);
    ,     
    function()
        newSrc = $('#swap img').attr('src').replace('-h.png','.png');     
        $('#swap img').attr('src', newSrc);
    );
); 

【问题讨论】:

【参考方案1】:

试试这个:

    /* so it's not working
    $(document).ready(function()      
        $('#site-logo').hover(function()     
            $('#swap img').attr('src').replace('.png','-h.png');    
        ,     
        function()    
            $('#swap img').attr('src').replace('-h.png','.png');     
        );
    );
    */

好的,所以我发现 .replace 方法是纯 javascript 试试这个:

$(document).ready(function() 
    var newSrc = "";
    $('#site-logo').hover(function()
        $('#swap img').each(function() 
           newSrc = $(this).attr('src').replace('.png','-h.png');   
           $(this).attr('src', newSrc);
        );
    ,     
    function()
        $('#swap img').each(function() 
           newSrc = $(this).attr('src').replace('-h.png','.png');     
           $(this).attr('src', newSrc);
        );
    );
); 

【讨论】:

这有点工作,图像正在交换,但所有 4 个图像都交换为 4-h.png 而不是 4-h.png、3-h.png、2-h.png 和1-h.png 我没有意识到你有 4 张图片..所以我用每个循环编辑它。现在应该可以工作了【参考方案2】:

你可以试试这个,只要这样使用.slice()就可以实现你的目标:

$('#site-logo').hover(function () 
   var atr = $('#swap img').attr('src').slice(0, -4);
   var newAtr = atr+'-h.png'
   $('#swap img').attr('src', newAtr);
,function () 
   var atr = $('#swap img').attr('src').slice(0, -6);
   var newAtr = atr+'.png'
   $('#swap img').attr('src', newAtr);
);

检查小提琴:http://jsfiddle.net/6vqJV/

【讨论】:

【参考方案3】:

试试这个代码

$(document).ready(function()      
    $('#site-logo').hover(function()     
        $('#swap img').attr('src','-h.png');    
    ,     
    function()    
        $('#swap img').attr('src','.png');     
    );
);

$(document).ready(function()      
        $('#site-logo').hover(function()     
            $('#swap img').each(function()
$(this).attr('src','-h.png');
             );    
        ,     
        function()    
            $('#swap img').each(function()
$(this).attr('src','.png');
);
        );
    );

【讨论】:

【参考方案4】:
$("#site-logo").hover(function () 

  $("#swap img").each(function () 
    var test = $(this).attr('src');
    $("#helper").append("<span>" + test.replace('.png', '-h.png') + "</span><br />");
  );

,

function () 
  $("#swap img").each(function () 
    var test = $(this).attr('src');
    $("#helper2").append("<span>" + test.replace('-h.png', '.png') + "</span><br />");
  );

);

Test Link

【讨论】:

以上是关于jquery 将鼠标悬停在图像上以交换上面 div 中的另一个图像的主要内容,如果未能解决你的问题,请参考以下文章

jQuery slideDown 无法正常工作

你如何在鼠标悬停(jQuery)上交换 DIV?

将鼠标悬停在 1 个 div 上以更改另一个 div 内容

markdown 将鼠标悬停在DIV上以扩展宽度

悬停在 div(1) 上以显示 div(2),如果 mouseout 继续显示 div(2) x 秒

将鼠标悬停在图像上以获取一个带有 html/JavaScript 中的多个链接的框