我在一个大型站点工作,该站点包含 2 个相互冲突的 jquery 插件,用于执行自动完成。
1) jquery.autocomplete.js(不是 jquery ui 的一部分):
$.fn.extend({
autocomplete: function ...
2) jquery.ui.autocomplete.js(来自最新的 jquery ui 库),它也使用自动完成关键字。
$.widget( "ui.autocomplete", { ...
有没有办法指定我只使用第二个 jquery.ui 小部件 打电话时
$( "#tags" ).autocomplete ...
不更改这 2 个文件?
最佳答案
由于第二个自动完成使用 $.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()
使用您的本地版本。
关于javascript - 具有相同函数名称的两个 jquery 插件之间的冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11898992/