jquery - 将鼠标悬停在同一元素上时重复更改图像

标签 jquery switch-statement

我有一个带有图像的 div,下面是菜单。我需要的是每当我将鼠标悬停在某个菜单项上时图像就会发生变化。目前总共有 5 张图像,每次我将鼠标悬停在 Logo 上时,我希望该图像更改为下一张图像,直到到达末尾,然后从图像编号开始循环。 1.

我是第一次使用 switch 语句,我可能做错了,因为我无法让它工作。现在我可以从图像 1 更改为图像 2,但随后就停止了。

我的代码如下:

HTML

<div>
    <img id="img" src="http://placekitten.com/200/300" />
</div>
<nav>
    <ul>
        <li id="logo"><a href="">logo</a></li>
        <li><a href="">menu item</a></li>
        <li><a href="">menu item</a></li>
    </ul>
</nav>

jQuery

$('#logo').bind("mouseover", function(){
    var currentimage  = $('#img').attr('src',"http://placekitten.com/202/302");

    switch (currentimage) {
        case 0:
            $('#img').attr('src',"http://placekitten.com/205/300");
            break;
        case 1:
            $('#img').attr('src',"http://placekitten.com/200/305");
            break;
        case 2:
            $('#img').attr('src',"http://placekitten.com/200/300");
            break;
    }
})

Here's the fiddle ,如果有人能看一下并指出我错在哪里,我将不胜感激:)

最佳答案

这不是switch 的工作原理。 switch 就像一个 if-else 链:

if ( currentimage == 0 )
    $('#img').attr('src',"http://placekitten.com/205/300");
else if ( currentimage == 1 )
    $('#img').attr('src',"http://placekitten.com/200/305");
else if ( currentimage == 2 )
    $('#img').attr('src',"http://placekitten.com/200/300");

但是,currentimage 不是 012,它是一个 jQuery 对象。当您调用时:

var currentimage  = $('#img').attr('src',"http://placekitten.com/202/302");

您将图像的 src 属性设置为 "http://placekitten.com/202/302",然后返回图像对象本身。因此,switch 语句不会输入任何 case

因此,您需要找到替代解决方案。一种方法是创建一个 count 变量并在每次鼠标悬停时递增它,然后使用 swtich 代替:

var count = 0;
...
count = (count+1)%3;
switch (count) {

Demo在 jsFiddle.这不是最好的解决方案,但可能会帮助您入门。

关于jquery - 将鼠标悬停在同一元素上时重复更改图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15148555/

相关文章:

JQuery 改变 'Option' 元素的背景颜色

jquery - 如何使用下划线_.wrap方法修改jquery select2方法($.fn.select2)

javascript - 在javascript中从dd-MMM-yyyy到dd-MM-yyyy的日期格式转换

jquery - 使用 jQuery 通过单击 td 获取表 id

c# - 我在 C# 中声明了一个变量,但不能在 switch 语句中使用它

vbscript - 有没有办法退出或中断 VBScript 中的 switch 语句?

php - 如何在 php 中使用路径信息?

c++ - switch语句默认范围?

javascript - 如何搜索和替换 {{ :example}} 中的内容

generics - 在 TypeScript 的泛型函​​数中推断映射类型