从jQuery中获取字符串中的所有锚点

时间:2016-10-25 15:52:50

标签: javascript jquery html

我正在尝试创建一个包含字符串中所有锚链接的数组。例如,如果我有一个像下面这样的字符串

<a href="http://google.it>Google</a>
<a href="http://google.com>Google 2</a>

它应该返回一个包含

的两个元素的数组
  

http://google.it

     

http://google.com

我的字符串是从textarea获得的,所以我试过

var html = $("textarea[name=html]").val();
var links = $(html).find('a').attr('href');
console.log(links);

但是,只显示一个链接(可能是字符串中的第一个链接)。我知道我可能需要循环遍历字符串中的所有锚点,但我该怎么做呢?

2 个答案:

答案 0 :(得分:5)

.attr()将只返回第一个元素属性尝试迭代所有元素并将属性存储在数组中:

var links = [];

$('body').find('a').each(function(){
  links.push( $(this).attr('href') );
})

console.log(links);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<a href="http://google.it">Google</a>
<a href="http://google.com">Google 2</a>

答案 1 :(得分:4)

attr()仅返回第一个匹配项,您必须将属性重新映射

var arr = $('<div />', {html:html}).find('a').map(function() {
    return $(this).attr('href');
}).get()

var str = arr.join(','); // if you need a string