2013-03-27 54 views
2

我在我的網站上使用FancyBox 1.3.1 jQuery插件。從jQuery的1.4.1切換到1.9.1後,我開始收到此錯誤信息:attributeContains選擇器中無法識別的表達式

Uncaught Error: Syntax error, unrecognized expression: a[rel=lightbox[ArticleImages]]

我試圖改變選擇什麼在jQuery documentation描述:

$('a[rel="lightbox[ArticleGallery]"]') 

但是沒」或者工作,所以任何幫助,將不勝感激。

+1

'從1.4.1切換到1.9.1 ...'這意味着你的代碼在1.4.1中工作。在1.9中,很多東西已被刪除或更改。如果您的代碼在您使用1.4但在1.9時運行,則不會遵循推薦的關於遷移到1.9的指南,方法是添加對[** migration js file **]的引用(http://code.jquery。 com/jquery-migrate-1.1.1.min.js)該文件將再次包含所有已刪除的功能,但在使用時向您的控制檯添加警告。該文件旨在支持開發人員遷移到1.9並支持第三方插件,直到他們升級到1.9。 – Nope 2013-03-27 09:15:59

+0

[這些不同的方法在jQuery選擇器中轉義方括號之間有什麼區別]可能的重複(http://stackoverflow.com/questions/18573178/what-is-the-difference-between-these-different-ways-逃脫方括號) – Sergio 2013-09-23 18:05:02

回答

2

對於選擇器內的方括號,您必須使用轉義字符反斜槓\

變化

$('a[rel="lightbox[ArticleGallery]"]') 

$('a[rel="lightbox\\[ArticleGallery\\]"]') 
+0

雖然我確定你的答案是現貨。 OP的陳述令人困惑:'從jQuery 1.4.1切換到1.9.1後,我開始得到這個錯誤信息:......這意味着代碼在過去工作,但現在不是。爲什麼語法在1.4而不是在1.9? – Nope 2013-03-27 09:19:43

+0

@FrançoisWahl我完全明白你的觀點,但現在我已經逃脫了選擇器並添加了migration.js文件,但仍然出現此錯誤:「未捕獲的錯誤:語法錯誤,無法識別的表達式:a [rel = lightbox [ArticleImages]] ,區域[rel = lightbox [ArticleImages]]「我想知道」區域「從哪裏來? – Chris 2013-03-27 09:22:49

+0

@Chris:如果你恢復到你原來的語法並返回使用jQuery 1.4.1,你的代碼工作呢? – Nope 2013-03-27 09:27:47

1

逃脫[運營商..因爲jQuery的認爲這是atrribute選擇

$('a[rel="lightbox\\[ArticleGallery\\]"]') 
0

答案由幾個部分,所以我只是要去總結這裏的答案:

  1. 在jQuery的1.9.1,你必須逃離選擇在方括號內。請看Adil的答案。

  2. 從jQuery的舊版本遷移到1.9.1時,可以使用migration.js文件確保任何舊的第三方插件仍然可用。請參閱FrançoisWahl的評論。

就我而言,這些建議都沒有奏效。我仍然收到相同的錯誤消息。

所以我所做的就是遷移到fancyBox2,但隨後在另一個問題絆:

我的網站使用Twitter的引導2.3.0不與fancyBox2工作。幸運的是,我在this forum thread找到了答案。

我不得不改變這個代碼和平在bootstrap.js文件:

.on('.dropdown-menu', function (e) { e.stopPropagation() }) 

要這樣:

.on('click.dropdown-menu', function (e) { e.stopPropagation() }) 

現在,它的工作原理。 Thx幫助。

相關問題