将jQuery滚动到另一个库中?

时间:2012-10-13 05:46:33

标签: javascript jquery

我有一个项目需要将自定义JavaScript库包含在最终用户的网站中。排在第三方的事情,想像Google Analytics这样的JavaScript跟踪。

我们无法控制可能加载的其他JS库/框架或版本。

我希望能够利用jQuery的事件委托,选择器和AJAX功能,但是:

  • 不会与其他库或其他版本的库发生冲突 可能加载的jQuery
  • 不要求最终用户思考 关于单独包含jQuery。

因此,滚动所有jQuery似乎有点矫枉过正,但同样需要事件委托,选择器和AJAX。我知道jQuery的sizzel引擎是以这样的方式分解的,它可以将它包含在第三方库中,并且有很多小的AJAX库,但我们也需要良好的事件委托支持。另外,我预见到我们需要在不久的将来使用这个库进行一些繁重的DOM提升,所以我们确实需要jQuery的大部分功能。

有关如何封装jQuery的任何建议,以至于我们不会践踏任何人的代码?另外,这是多么可取?它确实感觉有点不自在。

另外,将它封装到另一个库中的最佳选择是什么?有没有比这更好的方法?:

(function(window){
    window.myNamespace = {
        _jq:null,
        init: function(){
            // Include jQuery
            myNamespace.setJq();
        },
        setJq:function(){
            /*! jQuery v1.8.2 jquery.com | jquery.org/license */
            (function(a,b){function G(a){...}}) // <- minified jQuery
            // Stash a local copy of jQuery
            myNamespace._jq = jQuery;
            // Return $ and jQuery namespace
            $.noConflict(true);
        }
    }
})(window)

(我们打算提供一个没有jQuery的库版本,足以让他们知道它已经加载到他们的页面上以及他们正在使用的版本)

3 个答案:

答案 0 :(得分:2)

查看部件中的jQuery:https://github.com/mythz/jquip

答案 1 :(得分:1)

如何使用条件加载...测试$是否存在。如果是,请不要加载脚本。如果没有,则加载它。

答案 2 :(得分:0)

您可以使用以下模式来确保将jQuery传入函数,然后您可以将其映射到本地变量$而不会出现问题。

(函数(窗,$){   //使用$作为本地jQuery变量

})(窗口,jQuery的);