首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JS:图像翻转

JS:图像翻转
EN

Stack Overflow用户
提问于 2015-09-29 05:33:42
回答 4查看 198关注 0票数 1

我正在尝试使用jQuery中的鼠标悬停事件将img的src替换为img的id。然而,我的控制台错误显示$(...)为空。

有谁能帮帮我吗?谢谢。

这是我的项目:

代码语言:javascript
复制
var $ = function (id) {
    return document.getElementById(id);
}

window.onload = function () {
var listNode = $("#image_rollovers img");
    $(document).ready(function() {
        listNode.each(function() {
            var oldURL = $(this).attr("src");
            var newURL = $(this).attr("id");

            var rolloverImage = new Image();
            rolloverImage.src = newURL;
            $(this).hover(
                function() {
                    $(this).attr("src", newURL);
                },
                function() {
                    $(this).attr("src", oldURL);
                }
);
});
});
}

https://jsfiddle.net/rn70Lqrr/

EN

回答 4

Stack Overflow用户

发布于 2015-09-29 05:49:22

你的Javascript中有很多不必要的代码。我更新了JFiddle来解决这些问题。基本上不需要id函数,需要包含JQuery。您试图循环遍历list对象,而您真正想做的是循环遍历图像。

以下是更新后的小提琴的链接:

https://jsfiddle.net/tuboaLnd/2/

下面是更新后的Jquery代码:

代码语言:javascript
复制
$(document).ready(function() {
    var listNode = $("#image_rollovers li img");               
    listNode.each(function() {
        var oldURL = $(this).attr("src");
        var newURL = $(this).attr("id");
        var rolloverImage = new Image();
        rolloverImage.src = newURL;
        $(this).hover(
            function() {
                $(this).attr("src", newURL);
            },
            function() {
                $(this).attr("src", oldURL);
            }
        );
    });
});
票数 3
EN

Stack Overflow用户

发布于 2015-09-29 05:56:48

我是第二个SalientGreen。他比我快。:)我不会更新他的代码,但我让它像这样工作...

HTML (注意我添加的两个数据属性)

代码语言:javascript
复制
    <h1>Image Rollovers</h1>
    <ul id="image_rollovers">
        <li><img src="https://upload.wikimedia.org/wikipedia/commons/0/05/Favicon_250x250.png" alt="" data-src="https://upload.wikimedia.org/wikipedia/en/6/6b/LifestylePodnetwork-250x250.png" data-old="https://upload.wikimedia.org/wikipedia/commons/0/05/Favicon_250x250.png" /></li>
    </ul>            

Javascript:

代码语言:javascript
复制
$(document).ready(function(){
  $('img').hover(
    function() {
      $(this).attr("src", $(this).data("src"));
    }, function() {
      $(this).attr("src", $(this).data("old"));
    }
  );
});

也许这会在将来对你有所帮助。:)

票数 0
EN

Stack Overflow用户

发布于 2015-09-29 05:59:20

下面是我会怎么做:

代码语言:javascript
复制
$(document).ready(function () {
    // Preload images
    $('img[data-rollover-src]').each(function(img){
        var newURL = $(this).data('rollover-src');

        var rolloverImage = new Image();
        rolloverImage.src = newURL;       
    });
    
    $(document).on('mouseenter mouseleave','img[data-rollover-src]',function() {
        var oldUrl = $(this).attr('src');
        var newUrl = $(this).data('rollover-src');
        $(this).attr('src',newUrl).data('rollover-src',oldUrl);
    });
});
代码语言:javascript
复制
/* the default styles for the document */
 body {
    font-family: Arial, Helvetica, sans-serif;
    margin: 0 auto;
    padding: 20px;
    width: 190px;
    border: 3px solid blue;
}
h1, ul {
    margin: 0;
    padding: 0;
}
h1 {
    padding-bottom: .5em;
}
img {
    height: 175px;
}
/* the styles for the center content */
 section {
}
li {
    padding-right: 10px;
    display: inline;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section>
    	<h1>Image Rollovers</h1>

    <ul>
        <li>
            <img src="https://upload.wikimedia.org/wikipedia/commons/0/05/Favicon_250x250.png" alt="" 
                 data-rollover-src="https://upload.wikimedia.org/wikipedia/en/6/6b/LifestylePodnetwork-250x250.png">
        </li>
    </ul>
</section>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32832183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档