43

我正在尝试使用 jQuery 更改图像 src 属性

jQuery("#imageID").attr('src','http://localhost:8080/images/1/myImage.png' );

使用上面的代码我可以改变 src 属性,但是当我尝试这个时: -

jQuery("#imageID").attr('src',jQuery("#imageBlock").css('background-image') );

我无法更改 src。

假如

alert ( jQuery("#imageBlock").css('background-image') );

返回:

网址(http://localhost:8080/images/1/myImage.png

编辑#1 就在我即将接受解决方案时。我必须说,几乎所有解决方案都适用于 FF。我试过了:

  • 切片(4,-1);
  • split("(")[1] > 然后替换 (")" , "");

我想其他人也会工作。但是没有一个解决方案在 IE 中有效。原因是:当 FF 返回时:

网址(http://localhost:8080/images/1/myImage.png

IE 返回:

url(" http://localhost:8080/images/1/myImage.png ")

^^ 注意这里的引号

现在,设置 src attr 的通用方法是什么?我是否需要测试浏览器是否是 IE?

这是工作代码。

var src = "";
    if ( jQuery.browser.msie ) {
        src = jQuery("#imageBlock").css('background-image').slice(5,-2);        
    }else{
        src = jQuery("#imageBlock").css('background-image').slice(4,-1);
    }   
    jQuery("#imageID").attr('src', src );

我真的不喜欢它:x。如果还有其他解决方案,请告诉我,否则我将slice立即接受该解决方案。

4

4 回答 4

35

IMO,slicesubstringor更合适replace。尝试这个:

jQuery("#imageID").attr(
    'src',
    jQuery("#imageBlock").css('background-image').slice(4,-1)
);

在这里,您在url(和之间切割字符串)。有关该方法的详细说明,请参阅切片上的 MDC。

于 2010-02-02T10:48:41.353 回答
7

您需要提取 url 部分:

var backgroundImage = $("#imageBlock")
    .css('backgroundImage')
    .replace(/"/g,"")
    .replace(/url\(|\)$/ig, "");
jQuery("#imageID").attr('src', backgroundImage);
于 2010-02-02T10:51:07.497 回答
2

这是因为 url() 字符串被包裹在它周围。您需要从字符串中删除它,例如使用替换功能......

var bgimg = jQuery("#imageBlock").css('background-image').replace('url(', '');
bgimg.replace(')', '');
于 2010-02-02T10:50:08.597 回答
0

您需要剥离url(和关闭)部件才能使其正常工作。

所以url(http://localhost:8080/images/1/myImage.png)

变成

http://localhost:8080/images/1/myImage.png

您可以使用子字符串、正则表达式替换或您选择的任何方法来执行此操作。

http://www.w3schools.com/jsref/jsref_replace.asp

也许:

jQuery("#imageID").attr('src',jQuery("#imageBlock").css('background-image').replace('url(','').replace(')','') )

于 2010-02-02T10:46:10.983 回答