我在一个大型网站上工作,其中包含两个冲突的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个文件?
答案 0 :(得分:10)
由于第二个自动完成是使用$.Widget
方法向jQuery注册自己,因此最容易改变内部的行为。
如果不对两个脚本加载之间的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>
然后会:
$().autocomplete()
使用jQuery UI版本和
$().ourautocomplete()
使用您的本地版本。
答案 1 :(得分:2)
我尝试使用jQuery UI的tabs功能,它应该对你有用。 函数在技术上是一个js对象,所以你可以简单地重命名它:
$.fn.tabs2 = $.fn.tabs;
delete $.fn.tabs;
$("#tabz").tabs2({});
希望有所帮助!
修改强>
与Alnitak建议的一样,您还需要删除上一个函数的名称。 另外,我认为.fn是必需的。