javascript - jquery every inside every 只影响最后一个元素

标签 javascript jquery loops each

我在嵌套循环方面遇到问题。请看下面的 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 是一个糟糕的变量选择。

http://jsfiddle.net/myqswjnt/

关于javascript - jquery every inside every 只影响最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25252967/

相关文章:

javascript - 检查数组索引是否大于循环中的值

loops - select 语句的默认情况继续执行

javascript - Extjs5:如何通过各种属性查询组件

javascript - 确定 jQuery 中对象的标签

javascript - 我如何知道哪些事件绑定(bind)到 DOM 元素?

javascript - 谷歌地图,根据输入插入图钉并使其可拖动

javascript - 计算数组中有多少个具有特定名称的条目并保存以供以后使用

javascript - 了解这段 javascript 代码的输出

jquery - WebForms 中的 fancybox2 不会触发按钮单击

c - 如何找到数组中重复次数最多的?