如何使用jQuery获取<link>标签的href?

5

我看到很多关于如何使用<a>标签来实现这个功能的内容,对于使用该标签,我没有任何问题,但是我似乎无法获取<link>标签的href属性。

即使尝试获取链接标签本身:

alert($("link").length);

给出0。
有什么想法吗?
2个回答

6
如果$("link").length返回0,则表示您的选择器没有找到任何内容,无法获取链接。
您需要一个更好的选择器。可以通过ID(#linkId)或特定类别等方式来攻击它。有很多选择器可供使用: http://api.jquery.com/category/selectors/ 您的第一步是让.length显示1。然后从那里.attr('href')将给您链接位置。
编辑: 抱歉,我误解了您的意图。我认为您指的是锚标签。以下是我成功访问链接标签的方法:
var links = window.document.getElementsByTagName('link');
$(links).each(function() {
    $(this).attr('href')  // this is your href for the link tag in the loop
});

1
我实际上已经将HTML内容包含在一个变量中了...我从另一个网站上拉取了一个页面,现在我正在尝试从链接标签中提取href。当我警告该变量时,它清楚地显示有链接标签,但是如果我执行以下操作之一:html.getElementsByTagName('link').length或$("link", html).length,两者都会返回0... - Matt
我感到困惑。window.document.getElementsByTagName('link') 返回一个数组,其中包含几个项目(每个 <link> 在文档 <head> 中都有一个)但是我的匿名函数根本没有被调用(通过将 console.log('X') 添加到函数中或在其中添加断点来判断)。 - Jonathan Hartley
@Tartley:这里假设您正在使用jQuery的.each()函数。您是否在使用jQuery? - macca1
嘿,感谢您的回复macca1。我确实在文档中通过脚本标签引用了jQuery,但我不确定还需要做什么。不过别担心,我放弃了并以完全不同的方式完成了它,所以我不再担心了。我的javascript / jQuery教育将不得不等待另一天。 - Jonathan Hartley

3

我的猜测是,由于某种原因,在执行警告语句时,链接标签不可用。当我尝试以下示例:

<html>
<head>
<link rel="stylesheet src="xxx" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript">
    $(document).ready(function(){
        alert($("link").length);
    });
</script>
</head>
<body>
Hello world!
</body>
</html>

它整洁地返回“1”,而不是“0”。也许您可以尝试弄清楚您的代码和这个例子之间的区别。例如:您是否从HEAD标签或BODY标签运行代码?

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