使用 jQuery 更改图像源

IT技术 javascript jquery image
2021-01-24 13:31:17

我的 DOM 看起来像这样:

<div id="d1">
   <div class="c1">
            <a href="#"><img src="img1_on.gif"></a>
            <a href="#"><img src="img2_on.gif"></a>
   </div>
</div>

当有人点击的形象,我想图片src来改变<img src="imgx_off.gif">这里x表示图像编号1或2。

这是可能的还是我必须使用 CSS 来更改图像?

6个回答

您可以使用 jQuery 的attr()函数。例如,如果您的img标签具有id“my_image”属性,您可以这样做:

<img id="my_image" src="first.jpg"/>

然后你可以src像这样用 jQuery改变你的图像:

$("#my_image").attr("src","second.jpg");

要将其附加到click事件,您可以编写:

$('#my_image').on({
    'click': function(){
        $('#my_image').attr('src','second.jpg');
    }
});

要旋转图像,您可以这样做:

$('img').on({
    'click': function() {
         var src = ($(this).attr('src') === 'img1_on.jpg')
            ? 'img2_on.jpg'
            : 'img1_on.jpg';
         $(this).attr('src', src);
    }
});

人们在更改图像源时常犯的错误之一是不等待图像加载来执行诸如使图像大小成熟等后续操作。您将需要使用 jQuery.load()方法在图像加载后执行操作。

$('yourimageselector').attr('src', 'newsrc').load(function(){
    this.width;   // Note: $(this).width() will not work for in memory images

});

编辑原因:https : //stackoverflow.com/a/670433/561545

是的。这终于成功了。.destroy() 远远不够。在交换各种大小的图像等时,核对所有 html 并再次初始化实际上有效。
2021-03-20 13:31:17
请注意,负载不会可靠地触发,尤其是当图像在缓存中时。请参阅 jQuery 文档。
2021-03-30 13:31:17

如果您多次更新图像并且它被缓存并且没有更新,请在末尾添加一个随机字符串:

// update image in dom
$('#target').attr('src', 'https://example.com/img.jpg?rand=' + Math.random());
在最后添加随机字符串非常重要,至少对我来说是这样!坦克!
2021-04-01 13:31:17

想要查询更多的信息。我尝试使用以下语法在 jquery 中使用 attr 方法为广告图像设置 src 属性:$("#myid").attr('src', '/images/sample.gif');

此解决方案很有用,并且有效,但是如果更改路径也会更改图像的路径并且不起作用。

我一直在寻找解决此问题的方法,但一无所获。

解决方案是将 '\' 放在路径的开头: $("#myid").attr('src', '\images/sample.gif');

这个技巧对我非常有用,我希望它对其他人有用。

如果不仅有 jQuery 或其他资源清除框架——每个用户每次下载很多 kb 只是为了一个简单的技巧——还有原生的 JavaScript(!):

<img src="img1_on.jpg" 
    onclick="this.src=this.src.match(/_on/)?'img1_off.jpg':'img1_on.jpg';">
<img src="img2_on.jpg" 
    onclick="this.src=this.src.match(/_on/)?'img2_off.jpg':'img2_on.jpg';">

这可以写成通用且更优雅的:

<html>
<head>
<script>
function switchImg(img){
    img.src = img.src.match(/_on/) ? 
        img.src.replace(/_on/, "_off") : 
        img.src.replace(/_off/, "_on");
}
</script>
</head>
<body>
    <img src="img1_on.jpg" onclick="switchImg(this)">
    <img src="img2_on.jpg" onclick="switchImg(this)">
</body>
</html>
有多少人无法阅读问题并给出所要求的答案,这总是让我感到惊讶。对我(和你)来说,问题是寻找一个通用的解决方案似乎很明显,这就是为什么 OP 给出了 2 个例子。然而其他人似乎不仅完全错过了它,而且给出了一个甚至没有回答问题的答案。:(
2021-04-07 13:31:17