用jQuery交换图像

时间:2011-09-08 15:58:21

标签: jquery

我想在菜单中为某些图片添加翻转效果。

菜单目前是样式无序列表。

<ul id="myMenu">
  <li> <a href=""><img src="apple_faded.gif"></a></li>
  <li> <a href=""><img src="banana_faded.gif"></a></li>
</ul>

列表是通过循环动态生成的。当我将鼠标悬停在<li>上并使用jQuery执行此操作时,我要做的是从图像名称中删除“_faded”部分。

我知道这是可能的,只是不知道如何。


更新:

这是工作解决方案:

$("#myMenu li").mouseover(function(){
    var image = $(this).find("img");
    image.attr("src", image.attr("src").replace("_faded", ""));
}).mouseout(function(){
    var image = $(this).find("img");
    image.attr("src", image.attr("src").replace(".gif", "_faded.gif"));
});

6 个答案:

答案 0 :(得分:6)

不是万无一失,但这是一个jQuery解决方案。

$('#myMenu li').hover(function() {
  var image = $(this).find('img:eq(0)');
  image.src = image.src.replace('_faded', '');
}, function() {
  var image = $(this).find('img:eq(0)');
  image.src = image.src.replace('.gif', '_faded.gif').;
});

知道你也可以用CSS做到这一点吗?只需删除您的图片,提供您的菜单项ID,然后就可以在<li>上设置背景图片:

#myMenu li#apple       { background: url('apple_faded.gif'); }
#myMenu li#apple:hover { background: url('apple.gif'); }

/* Do the same for the other elements */ 

答案 1 :(得分:2)

$('#myMenu img').mouseover(function(){
  $(this).attr('src', $(this).toString().replace('_faded',''));
}).mouseout(function(){
  $(this).attr('src', $(this).toString().replace('.gif','_faded.gif'));
});

我希望这会有所帮助

答案 2 :(得分:1)

实际上这很简单。您只需在jQuery中使用hover()方法:

 $('img').hover(function()
 {
     $(this).prop('src', function(i, oldSrc)
     {
         return oldSrc.replace(/_faded/gi, '');
     });
 }, function()
 {
     $(this).prop('src', function(i, oldSrc)
     {
         return oldSrc.replace(/.gif/gi, '_faded.gif');
     });

 });

答案 3 :(得分:0)

我认为这将定义帮助:

式:

#menu1 {
background-image: url('apple_faded.gif');
}

#menu2 {
background-image: url('banana_faded.gif');
}

HTML:

<ul id="myMenu">
    <li id="menu1" onmouseover="this.style='background-image: url(apple.gif);'"> </li>
    <li id="menu2" onmouseover="this.style='background-image: url(banana.gif);'"> </li>
</ul>

它不是jQuery,而是JS。

答案 4 :(得分:0)

您可以使用字符串拆分,然后使用一些连接。

<body>


    <ul id="myMenu">
            <li><img src="apple_faded.gif"></li>
            <li><img src="banana_faded.gif"></li>
        </ul>
        <script>
        $('li img').mouseover(function(e) {
            var current = $(this);
            var name = current.attr('src');
            var original = name.split('_');
            var swap = original[0];
            var swapname = swap + '.gif';
            //alert(swapname);
            current.attr('src',swapname);
        });
        </script>
        </body>

答案 5 :(得分:0)

如果您使用javascript加载列表,您可能希望看到.live()函数http://api.jquery.com/live/,它会在列表的每个新元素上添加一个事件,例如,

$(".liElement img").live("mouseover", function(event) {
         //Do removal
});