2012-07-03 79 views
0

讀我剛剛發現在一條線上我的jQuery的錯誤,我不知道如何處理它。逃生撇號從<img ... alt= in JQuery

// Enable valid swatch images 
$.each(sizes, function (index, element) { 
    $("#variations img[alt='" + element + "']") 
     .parent().removeClass("swatchDisabled").addClass("swatchEnabled"); 
}); 

問題在於img的選擇器。 alt屬性值中有一個撇號。我不能輕易改變的ALT值,但我需要的,因爲它包含了我的代碼邏輯具有重要的價值來使用它。

有沒有逃脫這一個優雅的方式/包含在該ALT標記,以便jQuery將不就行了嗆任何撇號?

+0

嘗試用代碼替換(從字面上看,使用字符串替換)撇號:http://www.ascii.cl/htmlcodes.htm – TheZ

+0

我想...的HTML是從輸出一個XSLT樣式表。只是覺得在JQuery中處理這個可能更容易,而不用擔心HTML。我已經有一個轉義模板,只是沒想到我應該轉義一個alt屬性值。我會試試看看它是如何工作的。感謝您的參考 - 好網頁。 – rwkiii

+0

通過字符串替換我的意思的JavaScript功能,如@Esailija在他的回答中,如果對不起令人困惑的xD – TheZ

回答

2
$("#variations img[alt='" + element.replace(/'/g, "\\'") + "']") 

http://jsfiddle.net/UwEqs/

+0

我覺得我更喜歡這個。 :P尼斯。你會在你的XSLT中轉義alt屬性還是僅僅在你的jQuery中做?我沒有引用這個選擇器,但一次在我的JQuery腳本(我認爲)。 – rwkiii

+0

@rwkiii如果alt屬性有'「'(轉義或沒有),你將不得不逃避查詢,以及(因爲你正在使用'」'作爲分隔符爲ATTR字符串值)。這裏的HTML轉義版本並沒有區別http://jsfiddle.net/UwEqs/1/ – Esailija

+0

我明白了。我添加了'.replace',它解決了我的問題。我假設它使用正則表達式。多年來我一直在玩正則表達式,但不是很多,所以我不太瞭解代碼。我明白,它解決了我的問題!感謝您的幫助。 – rwkiii