8

autocmpleteを実行するために2つの競合するjqueryプラグインが含まれている大規模なサイトで作業しています。

1)jquery.autocomplete.js(jquery uiの一部ではない):

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

2)jquery.ui.autocomplete.js(最新のjquery uiライブラリから)。これもautocompleteキーワードを使用します。

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

呼び出すときに2番目のjquery.uiウィジェットのみを使用していることを指定する方法はありますか

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

2つのファイルを変更せずに?

4

2 に答える 2

12

2番目のオートコンプリートは$.WidgetjQueryに自分自身を登録する方法を使用しているため、社内のオートコンプリートの動作を変更するのが最も簡単です。

2つのスクリプトの読み込みの間に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()

ローカルバージョンを使用してください。

于 2012-08-10T11:55:25.357 に答える
2

jQuery UIのタブ機能を使って試してみましたが、同じように機能するはずです。関数は技術的にはjsオブジェクトであるため、名前を変更するだけで済みます。

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

お役に立てば幸いです。

編集

Alnitakが提案したように、前の関数の名前も削除する必要があります。また、.fnが必要だと思います。

于 2012-08-10T11:46:34.810 に答える