两个具有相同函数名称的jquery插件之间的冲突

dov*_*mir 7 javascript jquery jquery-ui autocomplete

我在一个大型网站工作,其中包含2个冲突的jquery插件,用于执行自动完成.

1)jquery.autocomplete.js(不是jquery ui的一部分):

$.fn.extend({
    autocomplete: function   ...
Run Code Online (Sandbox Code Playgroud)

2)jquery.ui.autocomplete.js(来自最新的jquery ui库),它也使用autocomplete关键字.

$.widget( "ui.autocomplete", {   ...
Run Code Online (Sandbox Code Playgroud)

有没有办法在调用时指定我只使用第二个jquery.ui小部件

$( "#tags" ).autocomplete ...
Run Code Online (Sandbox Code Playgroud)

没有改变2个文件?

Aln*_*tak 11

由于第二个自动完成是使用$.WidgetjQuery注册自身的方法,因此最容易改变内部的行为.

您将无法未做加载他们两个一些类型的更改这两个脚本负荷之间的jQuery对象,因为他们只会用冲突(或重写)对方.

我会试试这个:

<script src="jquery.autocomplete.js"> </script>
<script>
    // rename the local copy of $.fn.autocomplete
    $.fn.ourautocomplete = $.fn.autocomplete;
    delete $.fn.autocomplete;
</script>
<script src="jquery-ui.autocomplete.js"> </script>
Run Code Online (Sandbox Code Playgroud)

然后将做出:

$().autocomplete()
Run Code Online (Sandbox Code Playgroud)

使用jQuery UI版本,和

$().ourautocomplete()
Run Code Online (Sandbox Code Playgroud)

使用您的本地版本.