【问题标题】:Hover on one image, change another. Multiple first hovers affect one changed image悬停在一个图像上,改变另一个。多次首次悬停会影响一个更改的图像
【发布时间】:2012-10-20 13:39:35
【问题描述】:

我在产品页面上有一个产品色调列表。

页面上还有一张大图。

我希望能够将鼠标悬停在色度列表中的一个小缩略图上,然后将其显示在大图片上。

我有以下代码,但这不正确。它不会更改mainpic,而是更改其悬停在其上的图像....

$('img[data-hover]').hover(function () {
    $(this).attr('tmp', $(this).attr('src')).attr('src', $(this).attr('data-hover')).attr('data-hover', $(this).attr('tmp')).removeAttr('tmp');

}).each(function () {
    $('<img />').attr('src', $(this).attr('data-hover'));
});​

有一个 JS Fiddle here,但是你可以看到它没有按预期工作。

悬停不会影响较大的图片,而是会影响悬停在同一图像上的图像。

现场直播是为了更清楚地理解我的意思:

Ruby Tuesday Creative Site

【问题讨论】:

    标签: jquery hover


    【解决方案1】:

    查看此演示http://jsfiddle.net/Uc9ch/8/

    代码:

    var mi = $('#mainImage');
    
    // this code will do the rest for you
    $('img[data-hover]').hover(function () {
        mi.data('prevsrc', mi.attr('src')).attr('src', $(this).attr('data-hover'));
    }, function() {
        mi.attr('src', mi.data('prevsrc'));     
    });
    

    更新:

    您的页面上似乎有几个问题。

    a) 您尚未使用&lt;/script&gt; 关闭脚本标签。查看源码,你会看到最后一个脚本标签(包含上面代码的那个)没有关闭。

    b) 上面的代码需要放在$(document).ready(function() { &lt;insert-above-code-here&gt; }); 块中,以确保 DOM 已准备好并已加载。

    即应该是

    <script>
    $(document).ready(function() { 
    
        var mi = $('#mainImage');
    
        // this code will do the rest for you
        $('img[data-hover]').hover(function () {
            mi.data('prevsrc', mi.attr('src')).attr('src', $(this).attr('data-hover'));
        }, function() {
            mi.attr('src', mi.data('prevsrc'));     
        });
    
    }
    </script>
    

    【讨论】:

    • 为什么要两次调用attr(),我建议:mi.attr({ 'prevsrc' : mi.attr('src'), 'src' : $(this).attr('data-hover') });(如果您使用自定义属性,我建议使用data())。
    • @DavidThomas - 是的,这是有道理的。
    • 这在 JS Fiddle 中似乎可以正常工作,但是当带到站点时它似乎不起作用。是因为 mainpic 在另一个 div 中的颜色阴影吗? rubytuesdaycreative.co.uk/testsite/snood.html
    • 您的页面上似乎存在一些问题。 a) 您尚未使用&lt;/script&gt; 关闭脚本标签。 b) 上面的代码需要进入 $(document).ready(function() { &lt;insert-above-code-here&gt; }); 块内,以确保 DOM 已准备好并已加载。
    • 嗨,我已经检查并检查了脚本标签,但它们似乎都已关闭。也放入你的新脚本,但仍然没有? www.rubytuesdaycreative.co.uk/testsite/snood.html
    猜你喜欢
    • 2017-09-06
    • 2012-10-10
    • 2014-07-31
    • 2014-05-24
    • 1970-01-01
    • 2013-03-29
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多