2014-09-02 76 views
0

我有以下HTML结构:获取的使用jQuery找到链接href值()

... 
... 
    <div id="related-links"> 
     <ul> 
      <li class="first"><a href="some-link"></a></li> 
      <li><a href="some-link"><a href="some-link"></a></li> 
      <li><a href="some-link"><a href="some-link"></a></li> 
      <li><a href="some-link"><a href="some-link"></a></li> 
      <li><a href="some-link"><a href="some-link"></a></li> 
     </ul> 
    </div> 
... 
... 

我怎样才能在javascript所有li元素href价值?

我目前正在尝试此操作,但总是可能没有五个li

var related_links_body = $('div.related-links ul'); 
var related_links = []; 
related_links[0] = related_links_body.find("li.first a").attr("href"); 
related_links[1] = related_links_body.find("li.first").next().find("a").attr("href"); 
related_links[2] = related_links_body.find("li.first").next().next().find("a").attr("href"); 
related_links[3] = related_links_body.find("li.first").next().next().next().find("a").attr("href"); 
related_links[4] = related_links_body.find("li.first").next().next().next().next().find("a").attr("href"); 
+0

如果在页面上没有其他链接,然后document.links将包含所有这些 – mplungjan 2014-09-02 16:09:22

+0

这是一个合理的问题,我也摸索出这样的非优化的方式。不过,我想知道为什么这是低调。 – xan 2014-09-02 16:13:35

+0

有些人这样做 – mplungjan 2014-09-02 16:24:05

回答

2

使用each()只是它们聚集:

var related_links = []; 

$('#related-links ul li a').each(function() 
{ 
    related_links.push($(this).attr('href')); 
}); 

Documentation

+0

很高兴看到你修复了id选择器,不像原来的答案。 – epascarello 2014-09-02 16:24:56

0

首先你的选择是错误的,你用的是类选择,而不是一个ID选择

$('div.related-links ul') 

需要成为

$('div#related-links ul') 

$('#related-links ul') 


您可以使用jQuery map得到的HREF到一个数组。

var related_links_body = $('#related-links ul'); 
var anchors = related_links_body.find("li a"); 
var related_links = anchors.map(function() { return this.href; }).get(); 

JSFiddle