包装jQuery函数

时间:2009-09-17 05:19:18

标签: javascript jquery firefox-addon

我正在开发一个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 个答案:

答案 0 :(得分:2)

您可以将附加代码包装在匿名函数中,在该作用域上接收和存储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对象将不会注册,大多数插件将无法正常工作......

答案 1 :(得分:0)

如果你要将jQuery与代码一起打包,你可能只需修改库代码就可以将它粘贴到有用的地方。

要做到正确,你需要用myadoon.jQuery替换你所有的jQuery。*调用......