2012-03-21 107 views
0

我需要运行两个版本的jQuery。我试过j到jQuery的别名。这是我的代码。同时运行jQuery的多个版本

j = jQuery.noConflict(); // No conflict with older version of jQuery 
(function($) { 
    $('#any_id_or_class').on("click", function(event){ 
    console.log('clicked'); 
    }); 
})(j); 

我使用$ .fn.jquery记录的jQuery的版本,我得到,如果我从我的功能范围之内或之外登录两个不同的版本根据。如果我点击文档$('body')的“body”,就会得到输出结果,但如果我在页面上使用任何类或id,则什么都不会发生?想法?

编辑1:很明显,我只想使用一个版本的jQuery,但这不是一个选项。

编辑2:下面是我如何得到它的工作原理,并不理想,因为我想在函数范围内尝试和别名$。

j = jQuery.noConflict(); // No conflict with older version of jQuery 

j(document).ready(function(){ 
    j('#masthead').on("click", function(event){ 
    console.log('clicked'); 
    }); 
}); 
+1

为什么要用比1个版本的更多工作? – Joseph 2012-03-21 21:44:46

+0

使用较新版本并将您所依赖的任何弃用函数映射到那里较新的版本会不会更容易? “# – 2012-03-21 21:45:17

+1

_”但是这里是所有错误的地方“_ **它从一开始就出错!** – gdoron 2012-03-21 21:45:39

回答

1
var j = jQuery.noConflict(); // Unbinds the last included version of Jquery 

    j('#any_id_or_class').on("click", function(event){ 
    console.log('clicked'); 
    }); 

的noConflict作业将取消注册的最后一个包括jQuery的文件,所以一定要确保最后一个包含的是新版本有。对

+0

啊,这可能是问题所在,但这仍然不能解决需要两个版本的问题。 – 2012-03-21 21:57:26

+0

它应该做的。如果你包含两个jquerys并且像上面那样使用noconflict,那么使用$(“”)的任何东西都会使用第一个jquery,任何使用j(“”)的东西都会使用第二个jquery。我不完全确定使用classes/id有什么问题 - 是否有任何控制台错误?你使用$()还是j()?你确实把j定义为var,就像我上面提到的那样; var j = jQuery.noConflict(); – RTulley 2012-03-21 22:03:31

+0

我已经把j的全部功能都别名了,所以我仍然可以在其中使用$。我会尽量使用j。 – 2012-03-21 22:08:19