代码之家  ›  专栏  ›  技术社区  ›  unrelativity

将函数附加到jquery对象是否是错误的做法?

  •  2
  • unrelativity  · 技术社区  · 15 年前

    目前我有一个jquery插件,它不仅在 $.fn 而且 $ 本身,检查 if (typeof(this) == 'function') 看看是否有人打过电话 $.pluginname $(elm).pluginname …这是不是不好的做法,如果是这样,是否有更好的方法使提供元素成为可选的?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Alex Sexton    15 年前

    jquery extend函数在两个命名空间上都公开:

    jquery源将两者定义为:

    $.extend = $.fn.extend = ...
    

    这会让我相信他们希望你能做到这一点。但是,如果您看看jquery作者如何设置自己的函数来同时使用这两种功能,您可能会更好地了解最佳实践。

    例如,您通常希望$.fn函数调用$函数。(很像jquery源中的$.data函数)

    $.extend({
      data: function(elem, key, value) {...}
    });
    

    并且(稍微简化了一点):

    $.fn.extend({
      data: function(key, value){
        return this.each(function(){
          $.data(this, key, value);
        };
      }
    });
    

    这样,一个调用另一个,并检查您使用的版本,如果您想这样做,您可以检查$namespace中未定义的“elem”参数。

        2
  •  2
  •   Steerpike    15 年前

    你有没有读过 jquery authoring 文件?示例中的日志函数被认为是为开发人员向jquery对象添加函数的标准方法。