我在嵌套循环方面遇到问题。请看下面的 fiddle : 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)
上的迭代也不起作用,即使在闭包内也是如此:
(函数(i){ ... })(i);
我在这里缺少什么?感谢您的帮助
最佳答案
问题是由这一行引起的:
$bgElm = $(this).find('.swiper-slide-bg'),
每次发生第一个 forEach 时,您都会设置此内部变量的内容。当引发事件时, this 的值是 forEach 循环中的最后一个元素。您应该将这些变量移到 forEach 循环之外,并将元素附加到其中。然后,一旦引发该事件,就会对该变量内的元素进行循环。
我对我的提议进行了非常粗略的实现。当它起作用时,您应该重新组织数据结构并给出正确的命名以帮助描述您的意图。例如,对于描述视差元素集的变量来说,$bgElm 是一个糟糕的变量选择。
关于javascript - jquery every inside every 只影响最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25252967/