代码之家  ›  专栏  ›  技术社区  ›  Khaled Al Hourani

包装jquery函数

  •  0
  • Khaled Al Hourani  · 技术社区  · 15 年前

    我正在开发一个firefox加载项,在firefox加载项网站中指定了用于公开发布的加载项之后,审阅者要求我将所有函数包装在一个名称空间或包名称中。

    到目前为止,我已经包装了除“jquery”函数之外的所有函数:

    myaddonname = {
        initialize: function() {
            var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
    
            if (document.getElementById("contentAreaContextMenu") != null) {
                document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", this.onContextMenuPopup(), false);
            }
    
            jQuery.noConflict();
        },
    
            .
            .
            .
            .
    }
    

    jquery.noconflict和其他一些jquery的Ajax调用仍然是未封装的,有什么方法可以这样做吗?

    2 回复  |  直到 9 年前
        1
  •  2
  •   Christian C. Salvadó    15 年前

    您可以将附加代码包装在一个匿名函数中,接收并存储在该作用域上的jquery对象:

    (function ($) {
      // $ is available inside this scope
    
      window.myaddonname = { // global add-on namespace
        initialize: function() {
          //...
        }
        //...
      };
    })(jQuery.noConflict()); // execute and pass a reference to jQuery
    

    如果你在 非常 高冲突环境,您可以使用 jQuery.noConflict(true) (极端模式),但要小心使用,使用该选项 window.jQuery 对象不会被注册,大多数插件也不会工作…

        2
  •  0
  •   marc_s    9 年前

    如果您将jquery与代码一起打包,那么您也可以修改库代码,将其粘贴到有用的地方。

    做这件事 正确的 ,您需要替换所有jquery.*用myadoon.jquery调用…