-1

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

问题:自动完成 1(用 1.0.2 实现)仅在我评论自动完成插件 1.8.16 时才有效

我想让这两个功能都起作用。

你能告诉我可以做些什么吗?

任何线索将不胜感激。

谢谢

4

1 回答 1

0

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

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

动态重命名版本(从 Samuel Rossille 的回答中获取,编辑为不破坏旧的自动完成实现)

<!-- 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>
于 2012-05-31T12:12:32.177 回答