【问题标题】:jQuery plugin best practicejQuery 插件最佳实践
【发布时间】:2012-05-23 18:24:46
【问题描述】:

我是 jQuery 插件开发的新手,我很想知道下面列出的两种方式之间有什么区别?这样做的正确方法是什么?

(function($){
  $.myplugin = {
    // plugin code
  };
})(jQuery);

第二个:

(function($){
  $.fn.myPlugin = function() {
    // plugin code 
  };
})(jQuery);

【问题讨论】:

标签: jquery jquery-plugins


【解决方案1】:

$.fn 指向 jQuery.prototype。您添加到其中的任何方法或属性都可用于 jQuery 包装对象的所有实例。

$.something 将属性或函数添加到 jQuery 对象本身。

当您处理页面上的 DOM 元素时,使用第一种形式 $.fn.something,并且您的插件会对这些元素执行某些操作。当插件与 DOM 元素无关时,使用另一种形式 $.something

类似的问题:-)

【讨论】:

    【解决方案2】:

    第一个在jQuery中添加了一个实用函数,它被称为$.myplugin(...)

    第二个添加了一个作用于jQuery objects的插件,它被称为$(selector).myPlugin(...)

    如果您正在开发一个作用于元素的插件,并且可以成为 jQuery 风格的函数调用“链”的一部分,请选择后者。

    【讨论】:

    • +1 可以在此处找到 jQuery 实用程序列表:api.jquery.com/category/utilities 还值得一提的是,要使 jQuery 对象插件可链接,您必须返回引用为 this 的 jQuery 对象。
    • 技术上是$(this),但我相信你知道这个
    • @iambriansreed 不,实际上只是this - 在$.fn 扩展中this 已经 是一个jQuery 对象。
    • 啊。为什么它只在插件中有所不同!?。 docs.jquery.com/Plugins/Authoring 所以到达 DOM 元素将是 this[0],对吗?
    • @iambriansreed 插件通常只执行return this.each(function() { ... }),因此 DOM 元素可以在 that 闭包内作为this 使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 2023-04-07
    相关资源
    最近更新 更多