Javascript 代码中发生了什么(逐行分解)?

What's happening in this Javascript code (line by line breakdown)?

我仍在学习 JS 并希望构建一个 grid/thumbnail 轮播并找到了这段代码。它的行为真的很奇怪,因为它连续显示 3 个相同的图像(例如,图像 1 在图像 2 显示 3 次之前出现 3 次,等等)。我试图了解每一行中发生的事情,并希望有人可以帮助我分解每一行中发生的事情?

代码如下:

$('.carousel[data-type="multi"] .item').each(function(){ 
    var next = $(this).next();
    if (!next.length) {
        next = $(this).siblings(':first');
    }
    next.children(':first-child').clone().appendTo($(this));

    for (var i=0;i<1;i++) {
        // next=next.next();
        if (!next.length) {
            next = $(this).siblings(':first');
        }

        next.children(':first-child').clone().appendTo($(this));
    }
});

以下是我认为每一行中发生的情况:

  1. 创建适用于轮播中每个项目的函数

  2. 将 next 声明为一个变量(我昨天读到过有关使用它的信息,但我仍然不清楚它的作用——只适用于每个可变的 object?)

  3. 检查下一个元素是否存在以及它们是否存在

  4. 然后让 next 成为第一个选择器的兄弟姐妹?

  5. 将下一个 children 声明为第一个 child 之后的任何内容,并将其添加到 variable/object this?
  6. for 循环 where if 条件满足
  7. 不太清楚这行是什么意思
  8. 如果存在下一个长度
  9. 那么 next 将等于第一个选择器的 objects 兄弟姐妹(为什么在 for 循环外提到它时却在 for 循环内重复?)
  10. 不太确定为什么还要重复此操作?

如有任何帮助,我们将不胜感激!谢谢!

这里是:

$('.carousel[data-type="multi"] .item')

查找所有包含 class carousel 和 data-type="multi" 的项目,例如 然后找到 class item within .carousel

的所有项目
.each(function(){ 

遍历每个项目,this = 每个项目

var next = $(this).next();

找到直接在 .item 之后的元素 - 不知道这可能是什么,因为您没有包含 html

if (!next.length) {
    next = $(this).siblings(':first');
}

如果this是最后一个兄弟,则获取第一个兄弟,即从头开始重新开始

如果 carousel 只有一个项目,那么 this 现在将指向上面循环中的 .item (this)。

next.children(':first-child').clone().appendTo($(this));

找到下一个的第一个child,复制(克隆)并添加为当前.item

的child
for (var i=0;i<1;i++) {

设置 i = 0,但除此之外什么都不做(循环 i 从 0 到 0),i 没有被使用,这什么都不做

    // next=next.next();

移至上一项后的下一项next=

    if (!next.length) {
        next = $(this).siblings(':first');
    }

与以前相同的检查,这没有意义,因为 next 将被设置为第一个兄弟,所以什么都不做 - 如果你保持 next=next.next(); 循环回到开头,这将是有意义的

    next.children(':first-child').clone().appendTo($(this));

重复之前的克隆

这就是为什么你得到 3 张图像的原因 - 有(很可能,没有 html 证据)只有一张 .item 和两行代码将其复制到自身。