所以在开始时我想指出我检查了其他主题并且他们没有帮助我。
所以我得到这样的一句话:
$('div.fsl.fwb.fcb');
它给了我所有那些div元素,这很酷,但我只想要hrefs值,所以我做
$('div.fsl.fwb.fcb').find('a').attr('href');
根据jQuery文档,它给我的第一个元素值就是它应该是怎样的,它说我应该使用.each()或.map()函数,所以我选择.each()< / p>
$('div.fsl.fwb.fcb').each(function(){$(this).find('a').attr('href')});
但不是给我这些值,它给了我整个div,就像我会把这样的代码放在
$('div.fsl.fwb.fcb');
我在这个论坛上检查了一个关于这个问题的线程,但答案是在每个函数内部创建一个数组,但我更喜欢将这个数组作为函数返回,而不是全局变量。可能吗?
答案 0 :(得分:1)
$('div.fsl.fwb.fcb a').each
返回匹配的元素,而不是回调函数中的返回值,这就是你获取所有div的原因:
var hrefs = [];
var divs = $('div.fsl.fwb.fcb a').each(function(){
hrefs.push($(this).attr('href'));
});
console.log(divs); //all divs
console.log(hrefs); //all hrefs
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="fsl fwb fcb">
<a href="http://foo.com">Foo</a>
</div>
<div class="fsl fwb fcb">
<a href="http://bar.com">Bar</a>
</div>
&#13;
答案 1 :(得分:1)
关键是确定包含该属性的元素集并迭代:
$('div.fsl.fwb.fcb').find('a').each(function(){
$(this).attr('href');
});
EDIT2:想要它在数组中:
var myNewArray = [];
$('div.fsl.fwb.fcb').find('a').each(function(){
myNewArray.push($(this).attr('href'));
});
编辑:这只是同一个想法的另一个例子:
var arrayofhref = $('div.fsl.fwb.fcb').find('a').map(function(){
return $(this).attr('href');
}).get();
并将其扩展为:
var commanlistofhref = $('div.fsl.fwb.fcb').find('a').map(function(){
return $(this).attr('href');
}).get().join();
EDIT3:广告素材使用示例:将某个元素附加为文本并将其放入对象并显示;
var myobj = {
hrefs: []
};
$('div.fsl.fwb.fcb').find('a').each(function() {
myobj.hrefs.push({
href: $(this).attr('href')
});
$('#results').append($(this).attr('href') + '<br />');
});
$('#results').append(JSON.stringify(myobj));
答案 2 :(得分:0)
您可以使用map()
函数执行以下操作。
var arr= $('div.fsl.fwb.fcb a').map(function(){
return this.href;
}).get();
console.log(arr);
答案 3 :(得分:0)
您可以执行类似
的操作$('div.fsl.fwb.fcb > a').each(function(index, item){$(item).attr('href')});