6

ID パラメータに角かっこを使用する従来のシステムに取り組んでいます。例えば:

<select id="mySelect[]">
  <option value="1">Yadda</option>
  <option value="2">Yadda</option>
  <option value="3">Yadda</option>
</select>

jQuery(javaScriptであるため)は、このIDを使用しようとすると、当然のことながら文句を言います。

$("#mySelect[]").append(options);

レガシ コードを変更できないため、既存の ID (どのコンテキストでも有効である場合と無効である場合があります) に固執しているという事実を考えると、この混乱を回避して選択できるようにするための良い方法は何でしょうか?私の要素?

4

3 に答える 3

11

メタ文字を使用している間は、それらをエスケープする必要があります。

$("#mySelect\\[\\]").append(options);

それを言っているJqueryセレクタードキュメント

メタ文字 ( !"#$%&'()*+,./:;<=>?@[]^`{|}~ など) を名前のリテラル部分として使用するには、 2 つのバックスラッシュでエスケープする必要があります: \.

エスケープしたくない場合は、セレクターを使用できます

$( document.getElementById('mySelect[]')
于 2013-07-09T15:24:28.943 に答える
10

この方法を試してください:

$("#mySelect\\[\\]").append(options);

エスケープする必要があり[]セレクターで使用される予約済みの jquery 文字であるためです。

jqueryのドキュメントを見てください

メタ文字 ( !"#$%&'()*+,./:;<=>?@[]^`{|}~ など) を名前のリテラル部分として使用するには、 2 つのバックスラッシュでエスケープする必要があります: \. たとえば、id="foo.bar" を持つ要素は、セレクター $("#foo\.bar") を使用できます。

ここでフィドル

もちろん、これを行うこともできますが$('[id="mySelect[]"]')、これは属性セレクターのパフォーマンスに関しては遅くなり、id セレクターを使用する利点が失われますが、文字をエスケープする方法がない場合は便利です。

于 2013-07-09T15:23:55.763 に答える
3

このjsfiddleリンクを試してください。

以下の両方が正常に動作します。

console.log($('[id^=mySelect]'));
console.log($('#mySelect\\[\\]'));
于 2013-07-09T15:31:35.180 に答える