JQuery-Need帮助理解(i,el)

时间:2016-05-18 19:30:34

标签: javascript jquery web

我无法理解这段代码。

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”和“el”作为参数传入函数。我猜“el”指的是迭代的当前元素,但为什么他们称之为“el”。你可以用其他名字替换所有“el”吗?我不知道“我”是什么。
  3. 上半区的区块何时运行?它不在win.scroll事件中。

2 个答案:

答案 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)

  1. 否。 $().each()在jQuery对象(元素集合)上运行,只接受函数作为参数。
  2. 请参阅上面链接的文档。 i是索引(从0开始),el是元素本身。是的,只要您更改函数内部的引用,您也可以自由更改名称。
  3. 无论何时执行该代码块,它都会在启动时运行。