jqueryの特殊文字

私はdivのリストを持っていて、それぞれidを持っています。 idはリンクとしても機能します: "http://en.wikipedia.org/wiki/" + id は、このアイテムへのリンクです(wikipedia、 "/ image /" + id) + ".jpg" はこのアイテムのローカルイメージです。

しかし、私には特殊文字のあるIDがあります。括弧を含む A_(B)、特殊文字を含む第2の A%C3%A9B (AéB)の2種類があります。 ()%28%29 に置き換えることができるので、基本的には1つのタイプにすぎません。そして、私はテストしました。この種の名前は画像とwikiのリンクのために働きます。

問題は、jQueryを使用すると、 $( '#' + id)が特殊文字を持つオブジェクトを見つけることができないことです。誰もそれに対処する方法を考えている?

3

4 答え

If you look at the second paragraph of the selectors page, it shows you that these characters !"#$%&'()*+,./:;<=>[email protected][\]^``{|}~ need to be escaped when used.

But if you are including other characters it might be best to use their escape code to include them ( google closure compiler will automatically do this for you ). So this letter é can be replaced with \u00e9

2
追加された

やってみました:

var id = encodeURIComponent(id);
$('#' + id);

それを解決するかどうかを確認する?

1
追加された
これは助けてくれましたか?
追加された 著者 Robert Van Sant,

経験則としては、最初に関連する仕様に準拠することが大切です。 HTML 4.01 によると:

IDとNAMEトークンは文字([A-Za-z])で始まる必要があります。   任意の数の文字、数字([0-9])、ハイフン( " - ")、   アンダースコア( "_")、コロン( ":")、ピリオド( "。")。

したがって、(、)や%のような文字は、要素IDや名前には使用できません。

idの非適合文字は、jQuery以外の問題を引き起こす可能性があります。 %の文字が許可されていないため、 encodeURIComponent を使用すると(%28を使用すると置換えませんが)、典型的なaz、AZ範囲外の文字、または単純な古い document.getElementById を使うだけで、本当にjQueryを使用する必要がある場合は、

$(document.getElementById(id))

(信頼できるものではない)十分かもしれない。

0
追加された

詳細については、こちらの質問をご覧ください。

個人的には、私はIDが人間が読める、わかりやすいIDに従うと信じています。 jQueryの $。data などの異なるメカニズムを使用してURLを添付するか、有効性の制限がない別のプロパティを添付することを検討してください。

0
追加された
私はそう信じています。はるかに簡単です。私は代わりにそのリンク名を記録するタイトルを使用します。
追加された 著者 DrXCheng,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript