Javascript 获取Href并存储到数组jQuery中
如何获取每个视频的第一个youtube视频,并使用jQuery将它们存储到一个数组中 HTML:Javascript 获取Href并存储到数组jQuery中,javascript,jquery,Javascript,Jquery,如何获取每个视频的第一个youtube视频,并使用jQuery将它们存储到一个数组中 HTML: <div id="one"> <ul class="thumbs"> <li><a href="http://www.youtube.com/watch?v=-dzpkn29_vY"></a></li> <li><a href="http://www.youtube.co
<div id="one">
<ul class="thumbs">
<li><a href="http://www.youtube.com/watch?v=-dzpkn29_vY"></a></li>
<li><a href="http://www.youtube.com/watch?v=xFCRMonf7lI"></a></li>
</ul>
</div>
<div id="two">
<ul class="thumbs">
<li><a href="http://www.youtube.com/watch?v=UBTUAHGpQqE"></a></li>
<li><a href="http://www.youtube.com/watch?v=mTkPfjSXFpo"></a></li>
</ul>
</div>
但是如何获取这两个数据并将它们存储到一个数组中呢
var arr = $('.thumbs > li:first-child > a').map(function() {
return this.href;
}).toArray();
使用这种类型的搜索的好处是,只有链接到youtube的元素才会添加到数组中
arr
数组现在将如下所示:
["http://www.youtube.com/watch?v=-dzpkn29_vY", "http://www.youtube.com/watch?v=UBTUAHGpQqE"]
请注意,不需要从#一个和#两个元素开始(可以从.thumbs
开始),但是这将搜索限制为仅搜索这些元素(如果DOM中有其他.thumbs
元素)
这里有一个演示:Uhmm,如果这是一个愚蠢的问题,很抱歉-但是使用arr[arr.length]
而不是.push()
有什么理由吗?我认为每次迭代中额外的属性访问会对性能产生负面影响?调用。push
是不必要的函数调用。在旧浏览器中使用arr[arr.length]
会加快速度(在新浏览器中,我认为.push
实际上更快,但旧浏览器比新浏览器更需要帮助)。这根本不是一个愚蠢的问题。至少在运行chrome nighty时,根本没有可测量的差异。Firefox甚至可以更快地处理.push()
。这种影响在任何情况下都可以忽略不计。编辑:啊,旧的浏览器。这个JSPerf删除了额外的代码(在不同的浏览器中会有不同的表现):。在IE8或IE7中运行此JSPerf,并且.push()
会慢一些。Awww。我想这是我今天看到的最优雅的解决方案之一。帽子尖,伙计!
var arr = [];
$('#one, #two').find('.thumbs').each(function (index, element) {
arr[arr.length] = $(this).find('a[href^="http://www.youtube.com/watch?v="]').eq(0).attr('href');
});
["http://www.youtube.com/watch?v=-dzpkn29_vY", "http://www.youtube.com/watch?v=UBTUAHGpQqE"]