如何从图像路径中删除字符串

时间:2014-07-01 09:01:19

标签: javascript jquery

我在这段代码中所做的工作方式,就是你想要的任何数量的图像,你需要的只是将它们作为css类的路径。

Sub.html:

<div>

<img src ="../images/aa.png" class="path"/>
<img src ="../images/bb.png" class="path"/>
<img src ="../images/cc.png" class="path"/>
<img src ="../images/dd.png" class="path"/>
<img src ="../images/ee.png" class="path"/>

</div>

Jquery的:

$('#main').load( "../sub.html",function(data){
  var newPath = 'css/images/';
  $.each($('.path'), function(index){
  var originalSource = $(this).attr('src');

  // Replacing the source
  var newSource = newPath + originalSource.substr(originalSource.lastIndexOf('/') + 1);

  // Setting the new value of src
  $(this).attr('src', newSource);
});
});

一切正常,路径正在添加到图像中。

网址:localhost:8080/abc/def/ghi/jkl/css/images/aa.png.

但必填网址为localhost:8080/abc/def/css/images/aa.png.

如何从网址中删除ghijkl

jkl值会随着ghi的静态值而变化,每次都是相同的。

Working example

1 个答案:

答案 0 :(得分:1)

使用这样的正则表达式:

var newSource = replace(/\/ghi\/[^\/]*/, '');

[^\/]部分匹配除/之外的所有内容。 需要这样才能将/ghi之后的网址的可变部分转到下一个/

所以你的代码会变成:

$('#main').load( "../sub.html",function(data){
  $.each($('.path'), function(index){
    var originalSource = $(this).attr('src');

    // Replacing the source
    var newSource = originalSource.replace(/\/ghi\/[^\/]*/, '');

    // Setting the new value of src
    $(this).attr('src', newSource);
  });
});

修改

JSFiddle。我使用了代码的简化版本,一切都按预期工作。如果检查图像,则可以看到src属性应该被替换。