【发布时间】:2011-11-11 13:34:16
【问题描述】:
假设我们有以下 jQuery 插件(每个插件都在单独的文件中):
$.fn.foo$.fn.foo.bar$.fn.foo.baz
我使用标准的 jQuery 插件模式。第一个实际上是其名称空间的其余插件的代理或“外观”。
例如,当我调用$('#el').foo() 时,我也会在后台调用:
当我想只调用(没有$.fn.foo)$('#el').foo.bar()时有两个问题。第一个问题是没有$.fn.foo命名空间但我可以创建它,所以这实际上是没有问题的。第二个问题是this里面$.fn.foo.bar等于document对象,但我想等于$('#el')。我怎样才能做到这一点?
所以,长话短说,两者都应该起作用:
$('#el').foo(); // 这也会在后台调用 foo.bar 和 foo.baz $('#el').foo.bar(); // 我正在显式调用 foo.bar【问题讨论】:
-
没有调用“$(context).foo['baz'].apply(context);”多余的不应该只是 "$(context).foo['baz'];"
-
@Keith 如果他这样称呼它,
this将是文档而不是它被调用的元素。 -
这种命名空间很流行。请编写一个合理的架构,比如模块化代码,或者使用任何函数式或 OO 模式
-
@KevinB 谢谢你的澄清
标签: javascript jquery jquery-plugins