Javascript 将jQuery滚动到另一个库中?

Javascript 将jQuery滚动到另一个库中?,javascript,jquery,Javascript,Jquery,我有一个项目,需要在最终用户的网站中包含一个自定义JavaScript库。有点像第三方的东西,比如像Google Analytics这样的JavaScript跟踪 我们将无法控制还可能加载哪些其他JS库/框架或哪些版本 我希望能够利用jQuery的事件委派、选择器和AJAX功能,但: 不会与其他库或的其他版本产生任何冲突 可能已加载的jQuery 不要求最终用户必须思考 关于单独包含jQuery 所以,在所有jQuery中滚动似乎有些过分,但同样需要事件委托、选择器和AJAX。我知道jQue

我有一个项目,需要在最终用户的网站中包含一个自定义JavaScript库。有点像第三方的东西,比如像Google Analytics这样的JavaScript跟踪

我们将无法控制还可能加载哪些其他JS库/框架或哪些版本

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

  • 不会与其他库或的其他版本产生任何冲突 可能已加载的jQuery
  • 不要求最终用户必须思考 关于单独包含jQuery
所以,在所有jQuery中滚动似乎有些过分,但同样需要事件委托、选择器和AJAX。我知道jQuery的sizzel引擎是以这样一种方式出现的,即可以将其包含在第三方库中,并且有很多小型AJAX库,但我们也需要良好的事件委派支持。此外,我预计在不久的将来,我们也需要使用这个库进行一些重大的DOM提升,因此我们确实需要jQuery的大部分功能是有争议的

有没有关于如何封装jQuery的建议,这样我们就不会践踏任何人的代码?还有,这有多明智?确实有点不确定

另外,将其封装到另一个库中的最佳wat是什么?还有比这更好的方法吗

(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)
(功能(窗口){
window.myNamespace={
_jq:null,
init:function(){
//包含jQuery
myNamespace.setJq();
},
setJq:function(){
/*!jQuery v1.8.2 jQuery.com | jQuery.org/license*/

(函数(a,b){函数G(a){…})//分部分查看jQuery:

如果存在$,则测试它。如果存在,则不加载脚本。如果不存在,则加载它。

您可以使用以下模式确保jQuery被传递到函数,然后可以将其映射到局部变量$,而不会出现问题

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


})(窗口,jQuery)如果他们使用Prototype或jQuery 1.3,则无法解决问题。实际上,我所做的是测试jQuery是否已加载以及加载的版本。如果加载了正确的版本,我只传递jQuery的引用。否则,我会使用回调动态加载jQuery,该回调返回jQuery命名空间和$back并存储noConflict本地rsion。--我将Petah的响应标记为答案,因为它本应适用于我(并且可能适用于大多数人),但库的大小(在我包含所有需要的jQuery功能之后)基本相同。很好:)很高兴你找到了一种有效的方法。为什么你不写下你自己的答案,并将其标记为未来人们的正确答案呢?因为在你自己的库中包装jquip可能是问题标题的合适答案。--我的需求发生了变化,因为我意识到我不想通过发送一个不必要的大JS资产来惩罚用户,如果y已经加载或缓存了jQuery(当我动态添加它时,我会从Google的CDN中提取)。我可能会将我的解决方案附加到问题中,并在将来为其他人指向这个答案/评论链。