jQuery插件仅应用于最后声明的元素

jQuery插件仅应用于最后声明的元素,jquery,jquery-plugins,Jquery,Jquery Plugins,我编写了一个jQuery插件来控制同一页面上多个图像的动画。调用在开始时初始化为: $(“#image1”).anims({顶部:“240px”,左侧:“300px”) $(“#image2”).anims({顶部:“160px”,左:“430px”) anims插件基本上根据提供的顶部和左侧参数在mouseover和mouseout(使用悬停)上应用一系列动画。但是,在Safari中加载所有内容后,将鼠标移到#image2上会使#image1使用为#image2设置的参数设置动画。将鼠标悬停在

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

$(“#image1”).anims({顶部:“240px”,左侧:“300px”)

$(“#image2”).anims({顶部:“160px”,左:“430px”)

anims插件基本上根据提供的顶部和左侧参数在mouseover和mouseout(使用悬停)上应用一系列动画。但是,在Safari中加载所有内容后,将鼠标移到#image2上会使#image1使用为#image2设置的参数设置动画。将鼠标悬停在#image1上会按其应有的方式为#image1设置动画,并按其应有的方式为#image1设置参数。在Firefox中,情况正好相反。我想这和他们装的顺序有关


我可能做错了什么?我在整个插件中使用$(this)进行animate()和其他各种调用。

我会仔细检查此页面上的所有要点:

  • 将文件命名为jquery。[插入插件名称].js,例如jquery.debug.js
  • 所有新方法都附加到jQuery.fn对象,所有函数都附加到 jQuery对象
  • 在方法中,“this”是对当前jQuery的引用 反对
  • 附加的任何方法或函数的结尾必须有分号(;)- 否则,代码将在 压缩的
  • 除非明确说明,否则方法必须返回jQuery对象 否则
  • 您应该使用this.each来迭代当前匹配的 元素-它可以产生干净和 以这种方式兼容代码
  • 在插件代码中始终使用jQuery而不是$,这允许 用户更改jQuery的别名 在一个地方。有关详细信息,请参见下文 解释和一个更优雅的 解决方案
例如,您说您正在使用
$(this)
,但您应该使用
jQuery(this)
。我怀疑这是问题所在,但您应该密切关注文档,以防由于不遵循其中一个文档而导致一些意外行为。是否返回jQuery对象


除此之外,你真的需要发布你的动漫插件的源代码,这样我们就可以试着看看可能有什么问题。

我会仔细检查这一页上的所有要点:

  • 将文件命名为jquery。[插入插件名称].js,例如jquery.debug.js
  • 所有新方法都附加到jQuery.fn对象,所有函数都附加到 jQuery对象
  • 在方法中,“this”是对当前jQuery的引用 反对
  • 附加的任何方法或函数的结尾必须有分号(;)- 否则,代码将在 压缩的
  • 除非明确说明,否则方法必须返回jQuery对象 否则
  • 您应该使用this.each来迭代当前匹配的 元素-它可以产生干净和 以这种方式兼容代码
  • 在插件代码中始终使用jQuery而不是$,这允许 用户更改jQuery的别名 在一个地方。有关详细信息,请参见下文 解释和一个更优雅的 解决方案
例如,您说您正在使用
$(this)
,但您应该使用
jQuery(this)
。我怀疑这是问题所在,但您应该密切关注文档,以防由于不遵循其中一个文档而导致一些意外行为。是否返回jQuery对象


除此之外,你真的需要发布你的动漫插件的源代码,这样我们就可以试着看看有什么问题。

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

img=$(本)

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

var img=$(本)


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

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

img=$(本)

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

var img=$(本)


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

当某个操作仅应用于选择项/数组的最后一个元素或您获得选择项的最后一个ID/属性时,您可能还会发现这解释了常见的javascript问题。

当某个操作仅应用于选择项的最后一个元素时,您可能还会发现这解释了常见的javascript问题/数组或获取所选内容的最后一个ID/属性。

如果您编辑或链接到插件的代码,可能会有所帮助。如果您编辑或链接到插件的代码,可能会有所帮助。请使用JSLint(www.JSLint.com)检查您的代码,它会发出警告。(将$和jQuery放入全局并检查浏览器。)使用JSLint(www.JSLint.com)检查您的代码,它会发出警告。(将$和jQuery放入全局并选中浏览器。)