[英]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.