2013-06-18 95 views
-2

我使用這個代碼jQuery的線,它工作正常安裝的jQuery 1.7.2版本1.8.3與

$("div[id='gallery-'+nr] ul.previews li[id*='preview-']").last().clone().attr('id','preview-extra').appendTo("div[id='gallery-'+nr] ul.previews"); 

我增加了<li> - 元素到<ul>列表 的jQuery 1.7.2版本不幸的是這行代碼不工作的jQuery 1.8.3

的errormessage的是 錯誤:語法錯誤,不能識別的表達式:DIV [ID = '廊 - ' + NR] ul.previews Bronbestand:http://www.inwording.nl/supportbeta/wp-includes/js/jquery/jquery.js?ver=1.8.3 蔥:2

所以它涉及到代碼的appendTo部分。

我可以把它改成

.appendTo("div[id='gallery-'+nr] ul[class='previews']"); 

這消除了errormessage的,但不將元素添加到我的清單。

我可以將jQuery版本更改回1.7.2,但我不確定這是否是一種方式,因爲這是WordPress插件的一部分,並且WordPress 3.5+帶有jQuery 1.8.3。其他插件可能依賴於1.8.3,如果我將其更改回1.7.2,則會打破其他插件。

我試圖找到1.7.2和1.8.3之間的區別,但找不到任何與我使用的代碼相關的信息。

有沒有人見過這個問題?

+3

究竟做'DIV [ID = '畫廊 - ' + NR]'是指什麼? 'nr'是代碼中定義的一個變量,所以你期待像'gallery-123'這樣的東西? – jammykam

+0

你必須在屬性值周圍加引號。 –

+0

你意識到即使v1.8已經過時了兩個主要版本(當前版本是1.10) – Spudley

回答

1

nr您使用一個選擇粘貼在一起的變量,或者是它實際上你<div>id的一部分嗎?

換句話說,這是什麼在HTML代碼?

<div id="gallery-+nr"> 

這是一個不尋常的id,但它在HTML5中有效。

如果這是它是什麼,那麼問題就是這樣的報價之一是在錯誤的地方在這個選擇:

div[id='gallery-'+nr] 

這將需要:

div[id='gallery-+nr'] 

的第一個版本是一個無效的選擇器,甚至當你使用它自己時,甚至jQuery 1.7.2拒絕:

> $("div[id='gallery-'+nr]") 
    Error: Syntax error, unrecognized expression: [id='gallery-'+nr] 

Oddl Ÿ不夠,1.7.2 允許時,它作爲在代碼中再選擇的一部分這個選擇:

> $("div[id='gallery-'+nr] ul[class='previews']") 
    [ ul.previews ] 

在1.8.3,它拒絕這種形式的選擇的檢查得到了錯誤嚴格太。但是,再次將其更改爲這樣的工作:

$("div[id='gallery-+nr'] ul[class='previews']") 

現在,當我第一次看到你的問題我想nr實際上應該在選擇直接連接成一個id字符串的變量,例如你可能有這樣的HTML:

<div id="gallery-9"> 
    <ul class="previews"> 
    </ul> 
</div> 

,並給予可變nr,其電流值是9,你可以選擇最<ul>這樣的:

$("div[id='gallery-" + nr + "'] ul[class='previews']") 

我懷疑我錯在這個猜測,因爲你提到代碼在jQuery 1.7.2中工作。但是爲了以防萬一,我會在這裏有一對夫婦的相關建議將應答的這一部分:

  1. 它的工作原理確定無論哪種方式,但我會建議身邊換單,雙引號,這樣的JavaScript字符串是單引號的,選擇器內的屬性是雙引號的。這樣,它遵循選擇器的jQuery文檔,並且與您的其他引用字符串一致。

  2. 將單獨的行而不是一個長行的方法調用格式化長jQuery鏈是有幫助的。

把所有這些組合起來,代碼可能看起來像:

$('#gallery-' + nr + ' ul.previews li[id*="preview-"]') 
    .last() 
    .clone() 
    .attr('id', 'preview-extra') 
    .appendTo('div[id="gallery-' + nr + '"] ul.previews'); 
+0

感謝您的回答。不幸的是,你的代碼有錯誤。即使你按照引用的規則猜測,它仍然會令人困惑。 'div [id =「gallery-'+ nr +']'應該是'div [id =」gallery-'+ nr +'「]'這真的很棒,所以很多人願意分享他們的知識,但是我認爲大多數的海報都可以不用光顧 – RST

+0

@RST - 謝謝你的發現。是的,把字符串本身包含引號的字符串粘貼在一起總是令人困惑,不管你遵循什麼約定!:-)關於光顧,我不清楚,你是指我的答案中的某些內容,還是一般性地回答問題?我試着讓我的答案既友好又有幫助,所以當我錯過標記時,瞭解具體內容以便我可以修復我仔細觀察了我的答案,發現了一些可能會遇到的不友好的情況並更新了它。任何反饋都會受到歡迎。 –

+0

@RST - 而且,它究竟是什麼?是'nr'一個變量應該與其他字符串連接起來構成選擇器,或者它是al 'id'的迭代部分? –

相關問題