簡體   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