首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包装jQuery函数

包装jQuery函数
EN

Stack Overflow用户
提问于 2009-09-17 05:19:18
回答 2查看 1.1K关注 0票数 0

我正在开发一个Firefox插件,在Firefox插件站点公开发布该插件后,审阅者要求我将所有函数都封装在一个名称空间或包名称中。

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

代码语言:javascript
复制
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调用仍然是未包装的,有什么办法做到这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-09-17 05:43:43

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

代码语言:javascript
复制
(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) (extreme模式),但要小心使用,如果使用该选项,window.jQuery对象将不会被注册,并且大多数插件将无法工作……

票数 2
EN

Stack Overflow用户

发布于 2009-09-17 05:30:05

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

要做到这一点,您需要将所有的jQuery.*调用替换为myadoon.jQuery...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1436815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档