Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui 同一页面上有多个版本的jQuery自动完成_Jquery Ui_Jquery_Jquery Plugins_Jquery Autocomplete - Fatal编程技术网

Jquery ui 同一页面上有多个版本的jQuery自动完成

Jquery ui 同一页面上有多个版本的jQuery自动完成,jquery-ui,jquery,jquery-plugins,jquery-autocomplete,Jquery Ui,Jquery,Jquery Plugins,Jquery Autocomplete,我需要有两个自动完成框作为我目前的要求的一部分。它已经有了正常的自动完成框,这是以前用自动完成版本1.0.2实现的,现在我用自动完成UI版本1.8.16实现了另一个自动完成框。所以必要的是,多个版本的jQuery自动完成需要在同一个页面上运行,这会导致类似冲突的问题。当然,以前实现的自动完成框不能重做或升级 问题:AutoComplete1(使用1.0.2实现)仅在我对Autocomplete插件1.8.16进行注释时才起作用 我想让这两个功能都工作 你能告诉我怎么做吗 任何线索都将不胜感激 谢

我需要有两个自动完成框作为我目前的要求的一部分。它已经有了正常的自动完成框,这是以前用自动完成版本1.0.2实现的,现在我用自动完成UI版本1.8.16实现了另一个自动完成框。所以必要的是,多个版本的jQuery自动完成需要在同一个页面上运行,这会导致类似冲突的问题。当然,以前实现的自动完成框不能重做或升级

问题:AutoComplete1(使用1.0.2实现)仅在我对Autocomplete插件1.8.16进行注释时才起作用

我想让这两个功能都工作

你能告诉我怎么做吗

任何线索都将不胜感激


谢谢

我不太愿意回答这个问题,因为我不是100%确定,但我非常确定一个插件的两个版本不能在同一个jQuery实例中共存,只要它们具有相同的名称(例如,
$.autocomplete
)。但你可以解决这个问题。以下是一些示例,按我的推荐程度排序:

  • 升级旧的自动完成实现以使用1.8版
  • 只需在新实现中使用旧版本的autoComplete
  • 手动编辑插件较新版本的名称,如autocomplete2。手动或在插件包含之间执行此操作(参见下文)
  • 在同一页面上使用两个单独的jQuery实例,将每个自动完成插件版本加载到每个相应的jQuery实例中。您可以在加载每个jQuery版本并将它们存储在单独的变量中(例如,
    window.$
    window.$2

动态重命名版本(摘自Samuel Rossille的答案,编辑为不破坏旧的自动完成实现)


//然后将插件“重命名”为其他插件,例如autocomplete18
jQuery.fn.autocomplete18=jQuery.fn.autocomplete;
//$.autocomplete18现在应该包含新的autocomplete版本
//$.autocomplete应包含旧版本,而不是破坏以前的版本
//实施

你能不能也使用基于1.0.2的第二个版本?这样做不是一个好主意。使用最新版本的jQueryUI(1.8.20 btw)来完成旧的自动完成功能应该不需要太多工作。这是您的几个其他问题的重复。请不要问重复的问题。是否需要在插件端重复任何更改?就像重命名函数名一样?是的,正如您在上面的代码中所看到的,在旧插件覆盖
autocomplete
之前,插件从
autocomplete
重命名为
autocomplete18
。但是,不需要编辑插件的代码,除非您愿意这样做,而不是动态重命名插件
<!-- First include the new autocomplete plugin (1.8) -->
<script type="text/javascript" src="path/to/autocomplete version 1.8"></script>
<script type="text/javascript">
    // Then 'rename' the plugin to something else, e.g. autocomplete18
    jQuery.fn.autocomplete18 = jQuery.fn.autocomplete;
</script>
<!-- Then include the old version, which will overwrite jQuery.autocomplete -->
<script type="text/javascript" src="path/to/autocomplete version 1.0"></script>

<script>
    // $.autocomplete18 should now contain the new autocomplete version
    // $.autocomplete should contain the old version, not breaking the previous
    // implementation
</script>