每个内部的Jquery只影响最后一个元素

时间:2014-08-11 21:47:55

标签: javascript jquery loops each

我遇到嵌套循环问题。请看下面的小提琴: 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);

我在这里缺少什么?谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

问题是由于这一行:

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

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

我把我提议的非常粗略的实施放在一起。虽然它有效,但您应该重新组织数据结构并给出正确的命名以帮助描述您的意图。例如,对于描述视差元素集的变量, $ bgElm 是一个糟糕的变量选择。

http://jsfiddle.net/myqswjnt/