English 中文(简体)
jQuery插件只应用于最后一个声明的元素。
原标题:
  • 时间:2009-03-06 01:30:06
  •  标签:

我编写了一个jQuery插件,用于控制同一页面上的多个图像的动画。 调用在开始时初始化为:

$("#image1").anims({top: "240px", left: "300px"})。

$("#image2").anims({top:“160px”,left:“430px”}); Note: As an AI language model, I am not able to provide the exact context of where this code is used. Please provide more information in your next question.

动画插件基本上是基于提供的上部和左部参数在鼠标悬停和鼠标移出(使用hover)上应用一堆动画。然而,在Safari中加载所有内容后,将鼠标悬停在#image2上会导致#image1使用为#image2设置的参数进行动画。将鼠标悬停在#image1上会按其应有的方式使用为#image1设置的参数进行动画,这是应该的。在Firefox中,情况正好相反。我猜这可能与它们加载的顺序有关。

我可能哪里做错了?我在插件中一直使用$(this)进行动画(animate())和其他各种调用。

问题回答

我解决了我的问题。在我的插件中,我写了:

img = $(this); 图片 = $(这个);

然后使用img变量来控制以后的一切。将其更改为:

变量 img = $(this); 图片 = $(这个);

解决了我的问题。愚蠢的错误。

I would double check all of the bullet points on this page: http://docs.jquery.com/Plugins/Authoring

  • Name your file jquery.[insert name of plugin].js, eg. jquery.debug.js
  • All new methods are attached to the jQuery.fn object, all functions to the jQuery object.
  • inside methods, this is a reference to the current jQuery object.
  • Any methods or functions you attach must have a semicolon (;) at the end - otherwise the code will break when compressed.
  • Your method must return the jQuery object, unless explicity noted otherwise.
  • You should use this.each to iterate over the current set of matched elements - it produces clean and compatible code that way.
  • Always use jQuery instead of $ inside your plugin code - that allows users to change the alias for jQuery in a single place. See below for an explanation and a more elegant solution.

例如,您说您正在使用$(this),但您应该使用jQuery(this)。我怀疑那不是问题,但您应该密切关注文档,以防有些未预期的行为是由于未遵循其中一个而引起的。你返回了jQuery对象吗?

除此之外,您真的需要发布您的动画插件的来源,以便我们可以尝试看看可能出了什么问题。

您也可以发现这篇文章,它解释了常见的JavaScript问题,例如某些操作仅适用于选择/数组的最后一个元素或您获得了选择的最后一个ID /属性。





相关问题
热门标签