我正在尝试创建一个包含字符串中所有锚链接的数组。例如,如果我有一个像下面这样的字符串
<a href="http://google.it>Google</a>
<a href="http://google.com>Google 2</a>
它应该返回一个包含
的两个元素的数组我的字符串是从textarea获得的,所以我试过
var html = $("textarea[name=html]").val();
var links = $(html).find('a').attr('href');
console.log(links);
但是,只显示一个链接(可能是字符串中的第一个链接)。我知道我可能需要循环遍历字符串中的所有锚点,但我该怎么做呢?
答案 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