我无法理解这段代码。
var win = $(window);
var allMods = $(".module");
// Already visible modules
allMods.each(function(i, el) {
var el = $(el);
if (el.visible(true)) {
el.addClass("already-visible");
}
});
win.scroll(function(event) {
allMods.each(function(i, el) {
var el = $(el);
if (el.visible(true)) {
el.addClass("come-in");
}
});
});
我理解代码的下半部分在滚动窗口时运行,并且allMods.each块都是遍历所有带有“module”类的元素的循环。
有三件事我不明白:
答案 0 :(得分:1)
.each函数不应该将数组或对象和回调函数作为参数吗?这里只需要一个功能。
没有。您将其称为jQuery对象上的方法。它是循环的对象。内部each
使用this
来确定。{/ p>
为什么“i”和“el”作为参数传入函数。我猜“el”指的是迭代的当前元素,但为什么他们称之为“el”。你可以用其他名字替换所有“el”吗?我不知道“我”是什么。
您可以使用您喜欢的任何名称作为函数参数,它对调用时传递给它的值没有影响。确定这是调用函数的责任(即each
的内部)。传递给它们的值在the documentation for each
中描述。
Type: Function( Integer index, Element element )
第一个参数是jQuery对象中的索引。第二个参数是元素,它是该索引的值。
上半区的区块何时运行?它不在win.scroll事件中。
同时,任何不在函数内部的其他代码都将运行。将脚本加载到文档中时。
答案 1 :(得分:0)
$().each()
在jQuery对象(元素集合)上运行,只接受函数作为参数。i
是索引(从0开始),el
是元素本身。是的,只要您更改函数内部的引用,您也可以自由更改名称。