【问题标题】:Jquery Hover swapping two images in a li navbarJquery Hover在li导航栏中交换两个图像
【发布时间】:2013-06-21 17:04:24
【问题描述】:

我有一个使用 Bootstrap 构建的网站。我在导航栏中每个链接的两侧都放置了一个图像。导航栏 li a 通过引导程序/我的个人 css 具有悬停状态,当您将鼠标移动到链接附近的任意位置时,链接会改变颜色。我在链接的两边放了一个img:

<li><a href="index.html"><img src="bonelefty.png"/>Home<img src="bonerighty.png"/></a>     
</li>

<li><a href="about.html" id="about"><img src="bonelefty.png" class="img- 
 swap"/>About<img src="bonerighty.png" class="img-swap"/></a></li>

<li><a href="rates.html"><img src="bonelefty.png"/>Rates<img src="bonerighty.png"/></a>  
</li>

<li><a href="contact.html"><img src="bonelefty.png"/>Contact<img src="bonerighty.png"/>   
</a></li>

我想添加一些这样的 jquery,我在我网站的其他地方使用它

jQuery(function(){
    $(".img-swap").hover(function(){
        this.src = this.src.replace("bonerighty.png","bonerightw.png");
    },
    function(){
        this.src = this.src.replace("bonerightw.png","bonerighty.png");
    });
});

当我将 img-swap 类添加到链接旁边的图像时,它们只会在您将鼠标悬停在该图像上时发生变化,并且只有一个图像会发生变化(这对我来说很有意义)。当鼠标靠近链接并且链接发生变化时,我无法弄清楚如何使两个图像都发生变化。

【问题讨论】:

    标签: jquery css twitter-bootstrap hover


    【解决方案1】:

    你需要攻击 LI 才能拉动它:

    jQuery(function(){
        $("li").hover(function(){
            jQuery("img:first", this).attr("src","bonerightw.png");
            jQuery("img:last", this).attr("src","bonerighty.png");
        },
        function(){
            jQuery("img:first", this).attr("src","bonerightw.png");
            jQuery("img:last", this).attr("src","bonerightw.png");
        });
    });
    

    你也可以用 CSS 做到这一点:

    li{
        background-image: url("bonerighty.png"), url("bonerightw.png");
        background-position: left center, right center;
    }
    
    li:hover{
        background-image: url("bonerightw.png"), url("bonerighty.png");
    
    }
    

    【讨论】:

    • 好的,这确实针对正确的图像并交换它们,但问题是现在右侧图像变为左侧图像 boneleftw 或 bonelefty 取决于它当前是否突出显示。即,它在两侧都正确启动,但是在第一个鼠标悬停在boneright 上之后,它会切换到boneleft 并保持这种状态。然后在进一步的鼠标悬停时,两个bonelefty都变成boneleftw,希望这是有道理的。非常感谢。
    • 现在左边的变成右边的了。然后它切换到错误的一侧后,对进一步的悬停没有反应并且保持骨骼非常奇怪,感谢您的所有帮助,请让我知道您的想法
    【解决方案2】:

    您正在选择类名,您应该选择a 标记或li 标记。并使用它来选择您的图像。结果会是这样的:

    在你的 html 中

    <ul class="img-swap">
    <li><a href="link"><img>link<img></a></li>
    </ul>
    

    在你的 js 中

    $('.img-swap li').hover(function(){
    //select the images
    });
    

    $('.img-swap li a').hover(function(){
    //select the images
    });
    

    这是一个非常粗略的例子 - http://codepen.io/lukeocom/pen/cotAJ

    【讨论】:

    • 尝试在链接的每一侧实现不同的图像时,它完全停止运行(图像上没有悬停效果),不确定我做错了什么。
    • 如果您要更改的只是图像的路径,那么它应该可以继续工作。我用不同的图像更新了代码...
    • 运气好能解决您的问题吗?
    猜你喜欢
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 2018-06-23
    相关资源
    最近更新 更多