2011-08-10 68 views
1

jQuery的.hasClass被調用jQuery .hasClass在不應該返回時返回false?

參考:alias = '2983_pirrota_1011_A20_Input%2820cyc%29_773_CEL'其也是元件的id

if ($('#' + alias).hasClass('selected')) { 
    alert ("true"); 
} else { 
    alert ("false"); 
} 

然而這是回訪false時應當返回一個true,因爲它是類的一個成員!我在javascript中使用escape()函數來轉義別名值的特殊字符。只要我刪除%(這是escapeencodeURIcomponent如何編碼特殊字符)它開始工作正常。這是一個已知的問題,還是有一個簡單的方法呢?

謝謝。

回答

1

是的,它是一件已知的事情。你需要轉義特殊字符2個反斜線:http://api.jquery.com/category/selectors/

+0

有一個jQuery功能,可自動執行此操作?由於字符串是動態生成的。 – Falcata

+0

不,只需使用'alias.replace'('%','\\%')'來轉義它們(您可以擴展它以包含更多字符)。 – Mrchief

0

試試這個

if ($('#' + alias.replace(/%/g, "\\\\")).hasClass('selected')) { 
    alert ("true"); 
} else { 
    alert ("false"); 
}