Jquery each inside each只影响最后一个元素

Jquery each inside each affects only the last element

本文关键字:each 最后一个 元素 影响 inside Jquery      更新时间:2023-09-26

我有嵌套循环的问题。请看看下面的小提琴:http://jsfiddle.net/7znfmp9o/

我希望每个部分都有视差效果,但是这里发生了一些奇怪的事情,.each()代码只应用于循环中的最后一个元素。

改变这一行:

$bgElm = $(this).find('.swiper-slide-bg, .mk-section-video')

into this:

$bgElm = $('.parallax-true').eq(0).find('.swiper-slide-bg, .mk-section-video')

在所需的部分上运行代码片段,但是在.eq(i)上的迭代也不工作,即使在闭包中:

(function(i){ ... })(i);

我在这里错过了什么?谢谢你的帮助

问题出在这一行:

 $bgElm = $(this).find('.swiper-slide-bg'),

在每次第一次forEach发生时设置这个内部变量的内容。当引发事件时,this的值是forEach循环中的最后一个元素。您应该将这些变量移到forEach循环之外,并在其中添加元素。然后,一旦事件在该变量内的元素上引发for循环。

我对我的提议做了一个非常粗糙的实现。当它工作时,您应该重新组织数据结构并给出适当的命名,以帮助描述您的意图。例如,$bgElm对于描述视差元素集的变量来说是一个糟糕的变量选择。

http://jsfiddle.net/myqswjnt/