jQuery插件仅适用于选择器的最后一次出现

时间:2010-09-21 12:38:07

标签: jquery

我正在做一个移动div背景的jquery插件(基于另一个插件)。我不明白为什么如果我在元素上只使用$(“。video”)。moveBackground();效果很好。 如果我有2个或更多元素,则仅使用最后一个元素。

代码:http://jsfiddle.net/7PfEN/。它不适用于jsfiddle,但在本地工作正常(好,只有最后一个)。

提前致谢!

2 个答案:

答案 0 :(得分:1)

我相信你的问题是该插件使用sys对象来存储动画计时器,而sys对象对于你通过一次调用传递到的所有元素都是全局的{{1} 1}}。

所以虽然这不起作用......

.moveBackground()

我相信这会...

$('.video').moveBackground();

答案 1 :(得分:0)

首先,您的jsFiddle正在尝试$(".image").moveBackground()而不是$(".video")

但真正的问题是每次调用init()都会覆盖全局 sys.elem值。在极为简略的形式中,这是一种可能适合您的方法:

function init(elem) {
  ...
  $(elem).hover( function() {
    ...
  });
}
...
return this.each(function () { init(this); });

您需要通过elem向下传递各种功能,并在您目前拥有sys.elem的任何地方使用它。