2012-04-03 5 views
0

JavaScriptについて少し慣れていて、ここでこのビットでレンガの壁に当たっています。要素を見つめているときにjQuery IDセレクターが空の配列を返します

私はファイル名に基づいて一意のIDで構築されたjsTreeを持っています。例えば、

$("#node_:Folder4") 

ためのセレクタを実行

<a id="node_:Folder4" href="#">Folder4</a> 

[]を返しています。ここに私が見ている正確な問題の写真があります。何かご意見は?

http://imgur.com/J9BaP

+2

値、おそらくそれは、コロンが好きではありません。コロンはすでにいくつかの場所でセレクタによって使用されています – Murtnowski

+0

コロンは疑似クラスに使用され、IDでは無効です。 – josh3736

+0

エスケープするかどうかにかかわらず、結論が絶対に必要な魅力的な理由は考えられません。結腸をスキップして、幸せになれます。 ;-) –

答えて

3

あなたはコロンをエスケープする必要があります。なぜ

http://jsfiddle.net/MZA3b/1/

$('#node_\\:Folder4') 

わからないが、私は

IDとNAMEトークンが開始しなければならないと言うことここに、この文書を見つけました([A-Za-z])で始まり、 の後に任意の数の文字、数字([0-9])、ハイフン( " - ")、 アンダースコア( "_")、コロン( ":")、およびピリオド( "。"

http://www.w3.org/TR/REC-html40/types.html#type-name

私はおそらく、非推奨のドキュメントを見て、しかし、はい、属性に特殊文字を使用して回避しようとしています

+0

あなたは本当に正しいです。 HTML仕様では、あなたのIDの中のほぼすべての文字を使用できるように指示していますが、それを参照するためには「特殊な」文字をそのままエスケープする必要があります。これはセレクタセクションのjQueryドキュメントにも記載されています。 –

+0

ああ、これは正常に動作しているようです。大変ありがとう! – MrDoom

2

あなたは特殊文字をエスケープする必要がある - この場合には、コロンを。

$("#node_\\:Folder4") 
関連する問題