конфликт между двумя плагинами jquery с одинаковым именем функции

Я работаю в большой сайт, который имеет 2 конфликтующие Плагины jQuery включен для ведения autocmplete.

1) с помощью jQuery.функция автозаполнения.js (не часть пользовательского интерфейса jquery), который делает :

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

2) jquery.пользовательский интерфейс.функция автозаполнения.js (из последней библиотеки пользовательского интерфейса jquery), которая также использует ключевое слово автозаполнения.

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

есть ли способ указать, что я использую только второй, jquery.виджет пользовательского интерфейса при вызове

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

без изменения 2 файлы?

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 и

$().ourautocomplete()

использовать локальную версию.


Я попытался сделать это с помощью функции вкладок jQuery UI, она должна работать одинаково для вас. Функция технически является объектом js, поэтому вы можете просто переименовать ее:

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

надеюсь, что это поможет!

редактировать

Как предложил Alnitak, вам также необходимо удалить имя предыдущей функции. И еще, я думаю .ФН является обязательным.