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

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

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

$.fn.extend({ autocomplete: function ... 

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

 $.widget( "ui.autocomplete", { ... 

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

 $( "#tags" ).autocomplete ... 

没有改变2个文件?

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

如果不对两个脚本加载之间的jQuery对象进行某种更改,您将无法加载它们,因为它们只会相互冲突(或覆盖)。

我会试试这个:

    

然后将:

 $().autocomplete() 

使用jQuery UI版本,和

 $().ourautocomplete() 

使用您的本地版本。

我尝试使用jQuery UI的tabsfunction来完成它,它应该适合你。 函数在技术上是一个js对象,所以你可以简单地重命名它:

  $.fn.tabs2 = $.fn.tabs; delete $.fn.tabs; $("#tabz").tabs2({}); 

希望有所帮助!

编辑

像Alnitak建议的那样,您还需要删除上一个函数的名称。 另外,我认为.fn是必需的。