JQuery需要帮助理解(i,el)

JQuery-Need help understanding (i, el)

本文关键字:el 帮助 助理 JQuery      更新时间:2023-09-26

我很难理解这段代码。

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"类迭代所有元素。

有三件事我不明白:

  1. .each函数不应该将数组或对象和回调函数作为参数吗?这里只需要一个函数
  2. 为什么将"i"answers"el"作为参数传递给函数。我猜"el"指的是正在迭代的当前元素,但他们为什么称它为"el"。你能把所有的"el"都换成其他名字吗?我不知道"I"是什么
  3. 上半部分的方块什么时候跑?它不在win.scroll事件中

.each函数不应该将数组或对象和回调函数作为参数吗?这里只需要一个函数。

没有。您正在将其作为jQuery对象上的方法进行调用。它就是在那个物体上循环的。在内部each使用this来确定。

为什么将"i"answers"el"作为参数传递给函数。我猜"el"指的是正在迭代的当前元素,但他们为什么称它为"el"。你能把所有的"el"都换成其他名字吗?我不知道"I"是什么。

您可以为函数参数使用任何您喜欢的名称,这对调用时传递给它的值没有影响。确定这是调用函数(即each的内部)的责任。传递给它们的值在each的文档中进行了描述。

Type: Function( Integer index, Element element )

第一个参数是jQuery对象中的索引。第二个参数是作为该索引值的元素。

上半部分的方块什么时候跑?它不在win.scroll事件中。

同时,任何不在函数内部的其他代码都将运行。当脚本加载到文档中时。

  1. 没有。$().each()在jQuery对象(元素集合)上运行,并且只将函数作为参数
  2. 请参阅上面链接的文档。i是索引(基于0),el是元素本身。是的,只要更改函数内部的引用,就可以自由更改名称
  3. 它在启动时运行,无论何时执行该代码块