我有一个JS函数,它返回一个“.youtube”元素列表,循环选择器,并调用另一个函数。 JavaScript函数工作得很漂亮,但我想把它翻译成jQuery。这是JS函数,它可以正常工作:
var videos = document.querySelectorAll(".youtube");
for (var i = 0; i < videos.length; i++) {
getVideos(videos[i]);
}
现在我尝试将其翻译成jQuery:
$(".youtube").each(function(i, youtube){
getVideos(youtube[i]);
});
这不起作用。这是一个JSFiddle:http://jsfiddle.net/k3y3yvxq/2/
答案 0 :(得分:5)
jQuery中不需要索引 each() ,youtube
指的是元素
.each()方法旨在使DOM循环结构简洁且不易出错。调用时,它会迭代属于jQuery对象的DOM元素。每次回调运行时,都会从0开始传递当前循环迭代。更重要的是,回调是在当前DOM元素的上下文中触发的,因此关键字this指的是元素。 (摘自https://api.jquery.com/each/)
$(".youtube").each(function(i, youtube){
getVideos(youtube);
// or getVideos(this);
});
答案 1 :(得分:3)
你也可以这样做:
$(".youtube").get().forEach(getVideos);
...提供getVideos
只查看它的第一个参数而不是后续参数,因为它将使用三个参数调用:元素,它的索引和我们循环的数组(其中是.get()
给我们的真正的JavaScript数组。
或者更少的jQuery&#34;方式:
Array.prototype.forEach.call(document.querySelectorAll(".youtube"), getVideos);
我应该注意forEach
是ES5 +(例如,大约2009年),因此IE8没有它,因为IE8是在ES5规范最终确定之前发布的。所有现代浏览器都可以。