2010-07-06 125 views
2

我有關於jQuery插件的快速問題,希望有人在那裏有一些建議。 我正在使用一直按預期工作的jQuery插件,但在最近幾天我們從jQuery 1.1.4升級到1.4.2。
大量的調試後,我能意識到,在舊插件,選擇的寫法如下:將jQuery插件升級到最新版本

$('img[@id&=myImage]').each ... 

一旦我們升級到jQuery的最新版本,我開始JavaScript錯誤如下:

uncaught exception: Syntax error, unrecognized expression: [@id&=myImage] 

正如你所看到的,選擇包括「@」符號(我認爲這是一個導致錯誤),並諮詢有關的所有不同的類型選擇jQuery的文檔後,我沒能發現這是否正確,因爲它之前有效,現在它沒有。

在這一點上,我必須弄清楚,如果我可以使用舊版插件與新版本的jQuery,或者如果我必須想出一個替代解決方案。

我會很感激任何建議。
感謝

+0

只需刪除'@'應該這樣做。但是表達式中的'&',你確定這是代碼嗎?它不是'^ ='或'〜='或'$ ='? – artlung 2010-07-06 19:40:43

+0

請參閱此處的當前屬性選擇器文檔:http://api.jquery.com/category/selectors/ – artlung 2010-07-06 19:42:31

+0

是的,它是一個&符號,是的基於文檔它不應該在那裏,但它的工作之前,所以我做了不要質疑它。 我刪除了所有「@」符號的實例,但沒有出現錯誤,但插件根本無法使用。 – jnkrois 2010-07-06 19:44:17

回答

4

@attribute selectorsremoved in jQuery 1.3,只是把它拿出來,像這樣:

$('img[id^=myImage]').each(...); 

而且我不知道什麼&=就不得不提到,我想你想其他的一個attribute selectors here,可能是starts-with (^=)ends-with ($=)

+0

謝謝,那是我不知道的,我從每個選擇器中刪除了「@」,但這會導致插件不能一起工作。 – jnkrois 2010-07-06 19:45:40

+0

@jnkrois - 你遇到的標記是什麼?如果它只是* ID,它將是'#myImage',但它必須有一個開始於,結束於,包含等的內容......如果您發佈了元素標記,則會更容易分辨。 – 2010-07-06 19:47:13

+0

感謝Nick,我真的不想發表一些代碼,因爲我自己對此不太瞭解,所以我不會浪費你的時間,但是我非常感謝你的幫助。 謝謝 – jnkrois 2010-07-06 19:58:07

2

這一切歸結爲升級的優點和缺點。
優點進行升級是:

  1. 較新的版本,絕對有 速度/性能,也bug修復方面做了大量的改進。
  2. jQuery的新插件可能需要新版本,從長遠來看,您可能從中受益。

缺點:

  1. 你需要採取一切,在新版本 打破插件的照顧。就像所討論的那樣( 我想你可以拿出 @符號,它應該可以工作)。
  2. 您正在使用多少個這樣的插件,以及您的 js代碼的當前大小是多少,可以使用這個 升級。 jQuery的釋放 單證像thisthis可能是一個起點

你可以採取基於以上的成本和時間估計的決定。如果只有1或2個插件需要稍微調整,我會說肯定會繼續升級。
但是,如果你有一打插件打破了,你將不得不重寫幾乎50-60%的前端代碼,那麼你有一個艱難的電話:)