在调整浏览器大小时使用jQuery更改图像src

时间:2012-09-18 07:00:35

标签: jquery image replace screen-size window-resize

我有两个不同尺寸的图像,一个用于小于759像素的屏幕,另一个用于大于759像素的屏幕。

根据窗口宽度,我已设法在文档加载时更改图像的来源。但是我真的希望能够在浏览器调整大小的同时做到这一点但是对于我的生活我无法做到这一点,它似乎只在页面初始加载时起作用。

这是我的代码:

$(document).ready(function() {
    function imageresize() {
        var contentwidth = $(window).width();
        if ((contentwidth) < '700'){
            $('.fluidimage').each(function(){
                var thisImg = $(this);
                var newSrc = thisImg.attr('src').replace('x2', 'x1');
                thisImg.attr('src', newSrc);
            });
        } else {
            $('.fluidimage').each(function(){
                var thisImg = $(this);
                var newSrc = thisImg.attr('src').replace('x1', 'x2');
                thisImg.attr('src', newSrc);
            });
        }
    }

    imageresize();//Triggers when document first loads

    $(window).bind("resize", function(){//Adjusts image when browser resized
        imageresize();
    });
 }); 

4 个答案:

答案 0 :(得分:4)

尝试使用css3媒体查询,而不是在jQuery或javascript中进行。

http://css-tricks.com/media-queries-sass-3-2-and-codekit/

考虑使用“img-src”类。每当屏幕调整大小时b / w 600px到900px; x2.jpg将被加载。默认情况下,将使用x1.jpg。

例如:

.img-src {
   background-image: url("http://imageurlhere.com/x1.jpg");
}


@media (min-device-width:600px) and (max-width:900px) {
  .img-src {
      background-image: url("http://imageurlhere.com/x2.jpg");
   }
}

答案 1 :(得分:2)

首先试试这个......

更改您的以下代码行

$(window).bind("resize", function(){//Adjusts image when browser resized
        imageresize();
    });

// Bind event listener
    $(window).resize(imageresize);

并在imageresize中设置警报以查看它是否有效......

如果上面的情况没有成功...我相信可能存在一个问题..

在您的代码中

$(document).ready(function() {

 $(window).bind("resize", function(){//Adjusts image when browser resized
        imageresize();
    });
}

因此驻留在jquery中的函数可能效果不佳。最重要的是尝试使用简单的JavaScript;我有类似的问题,解决使用普通的JavaScript和jquery在某些浏览器中不起作用。

声音很奇怪,可以阻止你尝试但是会起作用......

答案 2 :(得分:2)

这不是jQuery,但你可以简单地使用document.getElementById("myId").src="another.jpg";来定义id为“myId”的img的新src。

答案 3 :(得分:1)

正如我所见,您的代码运行正常,但我更喜欢使用setTimeout,有时页面可能会减慢而不会调整暂停。

$(document).ready(function() {
    var resizeTimer,
        $window = $(window);

    function imageresize()
    {
        if ($window.width() < 700)
        {
            $('.fluidimage').text('< 700');
        }
        else
        {
            $('.fluidimage').text('>= 700');
        }
    }
    imageresize();//Triggers when document first loads

    $window.resize(function() {
        clearTimeout(resizeTimer);
        resizeTimer = setTimeout(imageresize, 100);
    });
 }); 

示例:jsfiddle.net/SAbsG/