用jQuery获取相对图像src

时间:2009-06-04 06:57:44

标签: javascript jquery

我的图像标签看起来像这样:

<img src="/path/to/my/image.jpg" />

但是当我使用jQuery访问src位时,jQuery给了我回复:

http://example.com/path/to/my/image.jpg

这在我正在做的一些比较中引起了问题。我不想更改我的图像路径以使用绝对URL。

关于如何从图像路径获取绝对URL的任何想法(这可能不像连接域那么简单 - 因为URL有时可能是绝对的),或者获取我在HTML中提供的路径?无论哪种方式,我都需要他们匹配。

编辑来自activa的评论

要发布的jQuery代码并不多,我使用的是cycle插件,在onbefore函数中,我只是调用next.src。我的jQuery和JavaScript foo不足以真正理解循环插件正在做什么来生成next - 如果你熟悉循环的话,我认为它是下一个循环的图像的DOM元素。

我的图片代码实际上就是这样:

<img src="/site_media/photologue/photos/cache/6927d406810ee9750a754606dcb61d28.jpg" alt="" class="landscape slideshow-image-1" />

并在我的onbefore函数中使用此代码:

alert(next.src);

会产生一个警告:

http://127.0.0.1:8000/site_media/photologue/photos/cache/6927d406810ee9750a754606dcb61d28.jpg

4 个答案:

答案 0 :(得分:18)

$("img").attr("src")返回src属性的实际值(在FF3和IE7中尝试过)

所以当你有

<img src="http://example.com/path/to/my/image.jpg" />

它会返回

http://example.com/path/to/my/image.jpg

当你有

<img src="/path/to/my/image.jpg" />

它会返回

/path/to/my/image.jpg

编辑问题后修改

听起来你可能想尝试

$(next).attr("src")

答案 1 :(得分:1)

为什么不脱掉它?

var hostname = 'http://' + window.location.hostname;

它将为主机名

提供帮助
http://example.com

然后重构您的变量,如

if( imgSrc == imgSrc2 ) ...

if( ImgSource(imgSrc) == imgSrc2 ) ...
使用

function ImgSource(path) {
    return hostname + path;
}

或其他方式arround

function ImgSource(path) {
    return path.replace(hostname, '');
}

答案 2 :(得分:1)

要始终获得完整解析的路径,请使用Element.src,而不是Element.getAttribute("src")(这似乎相当于attr(“src”))。

E.g:

document.getElementsByTagName("img")[0].src

而不是:

document.getElementsByTagName("img")[0].getAttribute("src")

。我会让你jqueryify .src。

答案 3 :(得分:0)

我在一个似乎是基于.NET的服务器上通过Ajax加载的页面上发生了这种情况。尽管路径相对于它返回完整的URL,即使在所有其他浏览器中它也可以正常工作。仅在IE 8中发生。我无法基于域剥离,因为我正在处理的项目有多个环境。

如果我找到比拆分或正则表达式更换更好的东西,我会报告回来。