繁体   English   中英

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

[英]conflict between two jquery plugins with same function name

我在一个大型网站工作,其中包含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对象的加载他们两个,因为他们只会用冲突(或重写)对方。

我会试试这个:

<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()

使用您的本地版本。

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

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

希望有所帮助!

编辑

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM