2011-08-10 13 views
1

jQueryの.hasClassは、参考のためjQuery .hasClassはfalseでないときにfalseを返しますか?

が呼び出される:alias = '2983_pirrota_1011_A20_Input%2820cyc%29_773_CEL'も要素のidあります。それはそのクラスのメンバーであるので、それはtrueを返すべきであるとき

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

しかしこれはfalseを返して!私は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"); 
} 
関連する問題