多个jquery noConflict文件

Multiple jquery noConflict files

本文关键字:文件 noConflict jquery 多个      更新时间:2023-09-26

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

对于窗口生成-所需的jQuery库有:-jquery.js(v1.3.2)-jquery-ui.js(v1.7.2)

我使用的是这里使用的一个扩展库,它使用$.window{…}.创建了一个基于jquery的对话框窗口

对于自动完成/插件搜索,-我正在使用的必需库是:-jquery.js(v1.7.2)-jquery-ui.js(v1.8.18)

这两个单独使用,效果非常好。但是,当在同一个页面上使用时,我必须创建无冲突文件,以便这两个函数在两者之间相遇。因此,目前,我正在使用:

  • 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.2jquery.js,窗口会更流畅,但自动完成功能将停止工作。如果我删除了v1.3.2jquery.js,则不会生成窗口。

现在,我使用以下功能:-

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

我如何使用v1.7.2jquery-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的正确语法是什么?这里使用的东西像:-

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,比如fstoke中使用的javascript?如果有人能明确说明为什么用v1.7.2替换v1.3.2会使其停止工作,我将不胜感激。

如果我可以补充的话,因为窗口是由$.window({…});-将$.window替换为$.dialog不会生成对话框。有什么地方我做错了吗?请浏览fstoke中使用的js文件。

Qn 3有人能指出fstoke jquery ui和cdn托管的jquery ui之间的区别吗?两者都是v1.7.2的jquery-ui.js文件。

我觉得这是一个很长的问题,但我急需帮助。请尽早帮我。!

我来回答问题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返回到它们以前的含义,所以您可以像往常一样继续使用它们。