Javascript 如何使用jQuery设置图像src

Javascript 如何使用jQuery设置图像src,javascript,jquery,image,src,Javascript,Jquery,Image,Src,我正在尝试使用jQuery更改image 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("#image

我正在尝试使用jQuery更改image 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') );
返回:

url()

编辑#1 就在我即将接受解决方案的时候。我必须说,几乎所有的解决方案都在FF中起作用。我试过:

  • 切片(4,-1)
  • 拆分(“”[1]>然后替换(“”),“”)
我想其他人也会工作。但这些解决方案都不适用于IE。 理由是: 当FF返回时:

url()

IE返回:

url(“”)

^^注意这里的引语

现在,设置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。如果有其他解决方案,请告诉我,否则我将立即接受
切片
解决方案。

您需要去掉
url(
并关闭
部分才能正常工作

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

变成

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

您可以使用子字符串、正则表达式替换或您选择的任何方法来实现这一点

也许:


jQuery(“#imageID”).attr('src',jQuery(“#imageBlock”).css('background-image').replace('url(','').replace('),''),'')
IMO,
切片
子字符串
替换
更合适。试试这个:

jQuery("#imageID").attr(
    'src',
    jQuery("#imageBlock").css('background-image').slice(4,-1)
);
在这里,您将在
url(
之间分割字符串。有关该方法的详细说明,请参见上的MDC。

这是因为url()字符串被包裹在它周围。您需要从字符串中删除它,例如使用replace函数

var bgimg = jQuery("#imageBlock").css('background-image').replace('url(', '');
bgimg.replace(')', '');

您需要提取url部分:

var backgroundImage = $("#imageBlock")
    .css('backgroundImage')
    .replace(/"/g,"")
    .replace(/url\(|\)$/ig, "");
jQuery("#imageID").attr('src', backgroundImage);

顺便问一下,这是什么?
replace(/url\(|\)$/ig,”)
它将字符串的url()部分替换为“”,这样您就可以自己获得图像的位置。是否需要剥离
呢?我一直认为浏览器返回了url字符串的解析表示形式,没有引号?如果我错了,正则表达式不应该是
/[”]/g
?浏览器不必以任何特定格式返回CSS值,因此您必须接受任何可能的规则声明方式。其中包括在中带有CSS反斜杠转义的裸字符串。(这个正则表达式不会处理这些内容,它还会删除字符串
url(
url中的任何位置,因为在开始处没有
^
锚定。)如果您通过删除
来修改它以允许引用它们,您也会在中用撇号打断任何URL。这就是为什么您可能不应该尝试从CSS样式中提取URL的原因。@Rakesh Juyal:是的。实际上我自己在IE中编码了95%。slice方法在ECMAScript第三版中定义,并且在MSDN:[这][1]简单而中肯。[1]: