jQuery插件开发

时间:2013-01-09 21:32:26

标签: jquery templates plugins

所以今天我决定在看过以下示例和模板之后阅读something关于jquery插件开发的内容:

CSS-Tricks.com plugin template Longpress.js

现在,我有以下问题:

@ CSS-技巧:

  • 为什么他有一个名为el的参数,那是什么东西 初始化?
  • 他为什么要在DOM对象中添加反向引用?
  • 他为什么不使用那个var methods = {//...}系统 jQuery文档?

@longpress

  • 另外,他为什么不使用jquery官方模式?
  • 为什么不是他,即他的mousewheel()方法绑定到插件 命名空间?
  • 这只是不好的做法还是更好的做法?

提前谢谢

修改

在这里说有人可能太具体了。所以我试着另外制定它;关于插件开发的官方文档中是否存在问题或不良建议应该以其他方式处理?

3 个答案:

答案 0 :(得分:2)

我会尽量回答尽可能多的问题。

“官方”jQuery模式只是一个建议。它说明了最佳实践,并不是确定的。那就是说,它太好了,我什么也没用。 “主管”部分(在代码末尾)非常聪明。

CSS-技巧

此模式的最糟糕的方面是它将成员放在$$.fn命名空间中。前者是可以避免的,例如使用jQuery“官方”模式。

el是从$.yourPluginName()传递给$.fn.yourPluginName()的形式变量,反过来表示调用插件的jQuery选择中的每个元素。

我不太清楚作者如何迎合插件的公共方法。

长按

这是一个更好的模式。它将一个成员放在$.fn命名空间中。其他一切都是“私人的”(在最外面的封闭中)。

不需要也不提供公开方法。

mousewheel代码不是插件。它可能更好地归类为“插件”。 mousewheel为jQuery添加了一个事件类型,因此元素可以使用mousewheel处理程序附加/命名空间/触发等,其方式与“click”,“mouseover”,“mouseout”等相同。

答案 1 :(得分:1)

  

为什么他有一个名为el的参数,那个东西在哪里被初始化了?

el是一个参数,不需要初始化。它在使用插件时传入。例如,$.yourpluginname($("<div />")[0])会初始化插件,el是一个没有附加到DOM的空div。

  

他为什么要在DOM对象中添加反向引用?

反向引用只是将当前实例存储在元素上,以便将来使用该元素调用插件可以引用现有实例而不是创建新实例。

  

为什么他不使用jQuery文档假定的var methods = {//...}系统?

因为我们第三方开发人员可以使用我们想要的任何结构自由开发插件。

  

另外,他为什么不使用jquery官方模式?

参见上一个回答

  

为什么不是他,即他的mousewheel()方法绑定到插件命名空间?

可能是不好的做法,但最终由插件开发人员决定是否有必要。

  

这只是不好的做法还是更好的做法?

两者都没有,这只是证明我们作为开发人员可以使用我们想要的任何结构开发jQuery插件的事实。

我更喜欢在jQuery UI小部件系统下开发,或者使用可以轻松扩展/修改的结构,这样我就不会得到n个不同版本的plugin.js。 (jquery文档中的内容的修改版本)

答案 2 :(得分:0)