多个jquery noConflict文件

时间:2012-07-09 22:03:50

标签: javascript jquery-ui jquery jquery-widgets

我正在实现以下两组功能: -

对于Window生成 - 必需的jQuery库是: - jquery.js(v1.3.2) - jquery-ui.js(v1.7.2)

我正在使用一个使用here的扩展库 - 它使用$ .window {...}创建一个基于jquery的对话框窗口。

对于自动填充/插件搜索, - 我使用的所需库是: - jquery.js(v1.7.2) - jquery-ui.js(v1.8.18)

这两个单独的工作完全正常。但是,当在同一页面上使用时,我不得不创建noconflict文件,以便这两个函数在两者之间的某个地方相遇。因此,现在,我正在使用:

  • jquery.js(v1.3.2)
  • jquery.js(v1.7.2)
  • jquery-ui.js(v1.8.1)

为:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.js"></script>
<script type="text/javascript" src="http://jqueryui.com/ui/jquery.ui.autocomplete.js"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.3.2.js"></script>
<script type="text/javascript">
    var jQuery_1_3_2 = $.noConflict(true);
</script>

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.js"></script>

/* Here I would like to use the script below with another noConflict, because v1.8.1 (above) causes flickering of dialog boxes while dragging around & isnt smooth like the one below, which is v1.7.2:-
<script type="text/javascript" src="http://fstoke.me/jquery/window/js/jquery/jquery-ui.js"></script>
*/

<script type="text/javascript" src="http://fstoke.me/jquery/window/js/jquery/window/jquery.window.js"></script>

如上所述使用时,与窗口交互时会出现大量的视觉故障。当移动窗口时,页面的其他部分会突出显示或闪烁(快速突出显示) - 大约50%的时间。拖拽与调整大小也不是很顺利。

如果删除v1.7.2 jquery.js,窗口会更顺畅,但自动​​完成功能不再起作用。如果我删除v1.3.2 jquery.js,则不会生成窗口。

现在,我使用的函数如下: -

function createSampleWindow() { 
sampleWnd = $.window({
.......//Code here
}(jQuery_1_3_2);

我如何在这里使用v1.7.2 jquery-ui.js,使用一些变量,如: -

<script type="text/javascript" src="http://fstoke.me/jquery/window/js/jquery/jquery-ui.js"></script>
<script type="text/javascript">
    var jq_172= $.noConflict(true);
</script>

Qn 1 对于同一个函数,使用这两个变量(jQuery_1_3_2和jq_172)的正确语法是什么? used here之类的东西: -

function createSampleWindow() { 
sampleWnd = $.window({
.......//Code here
}(jQuery_1_3_2, jq_172);

或者

function createSampleWindow() { 
sampleWnd = $.window({
.......//Code here
}(jQuery_1_3_2),(jq_172);

不起作用。

Qn 2 是否可以使用jquery.js v1.7.2而不是v1.3.2来实现大型javascript,例如一个used in fstoke - 如果有人可以做出明显的区分至于为什么用v1.7.2替换v1.3.2会让它停止工作 - 我会非常感激。

如果我可以添加,因为窗口是由$ .window({...})制作的; - 用$ .dialog替换$ .window不会创建一个对话框。有什么地方我错了吗?请浏览js文件used in fstoke

Qn 3 有人可以指出fstoke jquery-uicdn hosted jquery-ui之间存在什么差异 - 两者都是v1.7.2 jquery-ui.js文件。

我觉得这是一个很长的查询,但我迫切需要帮助。请尽早帮助我。!

1 个答案:

答案 0 :(得分:0)

我会回答问题1。

使用两个版本的jQuery的正确语法类似于

var jQuery_1_3_2 = jQuery.noConflict(true);

function createSampleWindow() { 
    var no_op = jQuery.noop;       // refers to jQuery 1.7.2's noop function
    var no_op = $.noop;            // same as the above
    var no_op = jq_172.noop;       // same as the above
    var guid = jQuery_1_3_2.guid;  // refers to jQuery 1.3.2's guid member
}

换句话说,如果你已经定义了它们,你只需使用它们。 noConflict(true)会将$jQuery恢复为之前的含义,因此您可以像往常一样继续使用它们。