我遇到嵌套循环问题。请看下面的小提琴: http://jsfiddle.net/7znfmp9o/
我希望每个部分都能获得视差效果,但这里发生了一些奇怪的事情。 .each()代码仅适用于循环中的最后一个元素。
更改此行:
$bgElm = $(this).find('.swiper-slide-bg, .mk-section-video')
进入这个:
$bgElm = $('.parallax-true').eq(0).find('.swiper-slide-bg, .mk-section-video')
在所需的部分上运行代码段,但.eq(i)
上的迭代也不起作用,即使在封闭期间也是如此:
(function(i){ ... })(i);
我在这里缺少什么?谢谢你的帮助
答案 0 :(得分:1)
问题是由于这一行:
$bgElm = $(this).find('.swiper-slide-bg'),
每次发生第一次forEach时,您都要设置此内部变量的内容。引发事件时,this的值是forEach循环中的最后一个元素。您应该将这些变量移到forEach循环之外,并将元素附加到其中。然后,一旦事件被引发以循环这个变量中的元素。
我把我提议的非常粗略的实施放在一起。虽然它有效,但您应该重新组织数据结构并给出正确的命名以帮助描述您的意图。例如,对于描述视差元素集的变量, $ bgElm 是一个糟糕的变量选择。