如何使用两个不同版本的jQuery UI

时间:2013-05-14 06:27:55

标签: jquery jquery-ui

我正在处理的自定义控件包含jquery ui 1.9.2,但它应该插入的项目可以包含任何版本。那么,有什么方法可以改变库中的东西,或者我可以创建我的jquery ui版本的实例并通过该实例调用我需要的函数?比如,例如,我创建了一个名为“JQUI19”的实例,然后让我说我将函数组合称为

$('#someElement').JQUI19.combobox();

或以任何其他方式。我记得我在某个地方看到类似的事情就像

一样
myJQ('#someElement').combobox();

但不记得我在哪里看到了。

2 个答案:

答案 0 :(得分:3)

永远不要使用两个版本的UI。

如果您打包的内容将被多个客户端重用,并且想要检查客户端是否已经有jquery UI,那么您可以使用以下内容:

if (typeof jQuery.ui !== 'undefined'){
// Add Google UI Library To Head
(function() {
  var jqUiScript = document.createElement('script'); jqUiScript.type = 'text/javascript'; jqUiScript.async = true;
  jqUiScript.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + '//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js';
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(jqUiScript, s);
})();


}

答案 1 :(得分:0)

在Jquery库中,在最后一行之后,键入

var mySelector = $;

在您的页面中包含其他版本后,请添加其他版本。

现在,在你想要使用这个jquery版本的所有脚本中(你甚至可以使用不同版本的jquery ui和其他库),用mySelector替换$。使用replaceall,但会有几个地方,比如在正则表达式匹配函数中,你想要将mySelector替换回$。这个问题困扰了我很长一段时间。它刚刚解决了。

注意:请确保不要替换jQuery原始脚本中的任何$。