【问题标题】:jQuery image replace - help fixing codejQuery 图像替换 - 帮助修复代码
【发布时间】:2013-06-12 13:27:31
【问题描述】:

我有一个代码可以在我的网站上工作。我目前正在使用带有 href="#image1" 锚标记的文本链接将特定 div 标记中的图像替换为另一个图像。

这背后的原理是,当您单击地址文本时,地图会变为该特定地址的地图图像。 但是,我目前在图像上使用渐变叠加,实际地图是使用 css 背景图像编码的。

.map-grad {
    background-image: url(../img/map.png);
    -ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader( src=//ssl.gstatic.com/s2/oz/images/local/map_gradient.png, sizingMethod=scale)";
    background: -webkit-linear-gradient(top, transparent 0%, transparent 66%, rgba(0, 0, 0, 0.294) 77%, rgba(0, 0, 0, 0.497) 91%, rgba(0, 0, 0, 0.7) 100%), url(../img/map.png);
    background: -moz-linear-gradient(top, transparent 0%, transparent 66%, rgba(0, 0, 0, 0.294) 77%, rgba(0, 0, 0, 0.497) 91%, rgba(0, 0, 0, 0.7) 100%), url(../img/map.png);
    background: -ms-linear-gradient(bottom, transparent 0%, transparent 66%, rgba(0, 0, 0, 0.294) 77%, rgba(0, 0, 0, 0.497) 91%, rgba(0, 0, 0, 0.7) 100%), url(../img/map.png);
    background: -o-linear-gradient(bottom, transparent 0%, transparent 66%, rgba(0, 0, 0, 0.294) 77%, rgba(0, 0, 0, 0.497) 91%, rgba(0, 0, 0, 0.7) 100%), url(../img/map.png);
    background: linear-gradient(bottom, transparent 0%, transparent 66%, rgba(0, 0, 0, 0.294) 77%, rgba(0, 0, 0, 0.497) 91%, rgba(0, 0, 0, 0.7) 100%), url(../img/map.png);
    background-position: center;
    height: 250px;
    max-height: 250px;
    max-width: 1600px;
}

我的 jQuery 是:

 var itemInfo = { // Initialise the item information
      img1: ['/img/map.png', ''],
      img2: ['/img/map2.jpg', ''],
};

$(function() {
      $('#maps a').click(function() { // When an item is selected
            var id = $(this).attr('href').replace(/#/, ''); // Retrieve its ID
            $('#info img').attr('src', itemInfo[id][0]); // Set the image
            $('#info p').text(itemInfo[id][1]); // And text
            return false; // Prevent default behaviour
      });
});

图片链接格式为:

<ul>
<li>Item 1</li>
<li>Item 2</li>
</ul>

实际被替换的图片如下:

<div class="map-grad">
    <div id="info">
        <img src="/img/map.png">
    </div>
</div>

谁能帮助我并建议一种通过css背景图像替换这些图像的方法。我的一个想法是从 .map-grad 中删除 background-image css 标签,然后简单地将其如下所示:

<div id="info">
<div class="map-grad" style="background-image: url(../img/map.png);"></div>
</div>

并编写 jQuery 代码来替换 css url 而不是它当前替换的 img src? 有什么想法和帮助吗? 谢谢

【问题讨论】:

  • 你的意思是$('.map-grad').css('background-image', 'newMap.png'); 吗?
  • 很遗憾没有。我需要一种方法来替换 css 中的所有 ../img/map.png 链接。

标签: jquery css image replace


【解决方案1】:

如果你需要替换所有的图像,我能想到的唯一方法就是这个

$.each($('*'), function( index, element ) {
   var element = $(element);
   if(element.css('background-image') === 'YourMap.png') {
      element.css('background-image', 'newMap.png');
   }
});

虽然使用类或其他东西而不是 * 会更好

编辑:如果您对所有图像都有一个类,您只需这样做

$('.myClass').css('background-image', 'newImg.png')

【讨论】:

  • 一堂课!!不敢相信我没想到。我可以为每个图像创建一个新类。如何使用 jQuery 更改与我上面的代码相关的 div 标签的类?那是我不确定该怎么做的事情..
猜你喜欢
  • 1970-01-01
  • 2011-05-27
  • 2015-11-10
  • 1970-01-01
  • 1970-01-01
  • 2013-05-27
  • 2011-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多