2012-05-31 87 views
-1

我需要有兩個自動完成框作爲當前需求的一部分。它已經有了一個正常的自動填充框,以前是使用自動完成版本1.0.2實現的,現在我已經實現了另一個自動完成框自動完成UI版本1.8.16。所以需要多個版本的jQuery自動完成需要在同一頁面上運行,這是導致衝突的一種問題。當然,以前實現的自動完成框不能重做或升級。在同一頁面上有多個jQuery自動完成版本

問題:當我發表意見自動完成插件16年1月8日

我想使兩者的功能工作自動完成1(1.0.2實現的)才起作用。

請問能提供一些建議嗎?

任何線索將不勝感激。

感謝

+2

你能不能有基於第二關1.0.2也? ? –

+2

這樣做不是一個好主意。真的不應該花太多的精力來讓舊的自動完成工作與最新版本的jQuery UI(1.8.20 btw)一起工作。 –

+0

這是其他幾個問題的重複。請不要提出重複的問題。 –

回答

0

我毫不猶豫地回答這個問題,因爲我不是100%肯定,但我敢肯定,一個插件的兩個版本不能在同一個jQuery的實例,只要他們有共存同名(例如$.autocomplete)。但是你可以解決這個問題。這裏有幾個例子,排序,我是多麼建議他們:

  • 升級舊的自動完成功能實現,以使用1.8版本
  • 只要使用舊版本的自動完成功能,爲您的新的實現
  • 手動編輯名的新版本的插件的東西像autocomplete2。手動執行或者插件包含(見下文)
  • 在同一頁面上使用兩個單獨的jQuery實例,將每個自動完成插件的版本加載到每個相應的jQuery實例中。加載每個jQuery版本並將它們存儲在單獨的變量中後,您可以通過調用jQuery.noConflict來完成此操作。 window.$window.$2

重命名版本的動態(塞繆爾Rossille的回答抓起,編輯不打破舊的自動完成功能實現)

<!-- First include the new autocomplete plugin (1.8) --> 
<script type="text/javascript" src="path/to/autocomplete version 1.8"></script> 
<script type="text/javascript"> 
    // Then 'rename' the plugin to something else, e.g. autocomplete18 
    jQuery.fn.autocomplete18 = jQuery.fn.autocomplete; 
</script> 
<!-- Then include the old version, which will overwrite jQuery.autocomplete --> 
<script type="text/javascript" src="path/to/autocomplete version 1.0"></script> 

<script> 
    // $.autocomplete18 should now contain the new autocomplete version 
    // $.autocomplete should contain the old version, not breaking the previous 
    // implementation 
</script> 
+0

需要在插件端進行任何更改?像重命名函數名稱一樣? – pal

+0

是的,正如你在上面的代碼中看到的那樣,插件在'autocomplete'被舊插件覆蓋之前從'autocomplete'重新命名爲'autocomplete18'。然而,不需要編輯插件的代碼,除非你願意這樣做而不是動態地重命名它 – Hubro

相關問題