【问题标题】:Jquery each inside each affects only the last elementJquery each inside each 只影响最后一个元素
【发布时间】:2014-08-11 21:47:55
【问题描述】:

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

在所需部分运行 sn-p,但在 .eq(i) 上的迭代也不起作用,即使在闭包内:

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

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

【问题讨论】:

标签: javascript jquery loops each


【解决方案1】:

问题是由于这一行:

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

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

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

http://jsfiddle.net/myqswjnt/

【讨论】:

  • 非常感谢先生,你救了我的一天:)。很好的解释
猜你喜欢
  • 1970-01-01
  • 2015-09-16
  • 2012-03-11
  • 2016-08-18
  • 2011-04-29
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 2013-09-27
相关资源
最近更新 更多