如何获取完整的锚点href?

9

可能重复:
如何在JavaScript中获取“原始”href内容

有时您会在代码中编写相对路径来引用文件,因此在代码中,href属性值可能是somefile.php,但当单击时,锚点会将您发送到http://www.yourdomain.com/somefiles.php

现在我的问题是,我是否可以以某种方式获取锚点的完整href?

使用$(anchor).attr("href")时,您只会得到相对路径。


这不是那个链接中所提供的解决方案,Matt在这里提供了可行的解决方案。 - eric.itzhak
3个回答

20
你可以使用.prop
$(anchor).prop("href")

这里有一个示例

console.log($("a").prop("href")); //http://fiddle.jshell.net/_display/sth
console.log($("a").attr("href")); //sth

谢谢,老兄!这个完美地运行。 - George Henrique

15

element.href 可以获取整个 href。

FIDDLE

编辑:

我会引用来自 jQuery 网站的一段话:

对于布尔属性/属性和在 html 中不存在的属性(如 window.location)应使用 .prop() 方法。所有其他属性(可以在 html 中看到的属性)都可以和应该继续使用 .attr() 方法进行操作。

由于 .attr() 获取的是属性中实际键入的值,因为它可能使用了原生的 getAttribute(),所以正确的方法是获取原生 JavaScript 元素,然后使用原生的 element.href,这将获取包括域名、路径名等在内的 href。


但我并不是试图在事件内获取属性。 - eric.itzhak
document.getElementById('elementID').href 或者 $(anchor)[0].href 就可以实现此功能,因为你只需要纯JS对象,而不是jQuery对象。 - adeneo
哦,我明白了。谢谢,我想我已经太依赖jQuery了。 - eric.itzhak
@eric.itzhak 这就是为什么它是重复的。当纯JavaScript可以很好地工作时,您正在寻求jQuery解决方案。 - Mike B
不仅如此,href是一个属性而不是一个属性,所以prop()方法并不真正打算以这种方式使用 -> link,即使它现在可以工作,也不能保证prop()将继续与href 属性一起工作! - adeneo
这是我需要制作的一个小工具,以便让自己相信所有这些: http://jsfiddle.net/mplungjan/J9bWf/show - mplungjan

0

你可以使用jQuery的prop函数。

为了测试,请在控制台中尝试以下代码,针对此页面;

$("a:eq(6)").prop("href")
$("a:eq(6)").attr("href")

如果需要更多信息,您可以搜索HTML属性和属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接