1. ホーム
  2. javascript

[解決済み] IDが角括弧を含む場合、IDでDOM要素を見つける?

2023-07-04 12:21:29

質問

のようなIDを持つDOM要素を持っています。

something[500]

これはRuby on Railsアプリケーションによって構築されました。 この要素を jQuery で取得し、DOM をトラバースして、事前にアクセスできない変数 ID を持つこの要素の親を削除できるようにする必要があります。

どのようにこれを行うことができるか、誰か知っていますか? 次のコードは動作していないようです。

alert($("#something["+id+"]").parent().parent().attr("id"));

さらに調べると、次のようになります。

$("#something["+id+"]")

はオブジェクトを返しますが、それに対して ".html()" や ".text()" を実行すると、結果は常に null か単なる空文字列になります。

どのように解決するのですか?

角括弧をエスケープして、属性セレクタとしてカウントされないようにする必要があります。これを試してみてください。

alert($("#something\\["+id+"\\]").parent().parent().attr("id"));

セレクタの特殊文字について を、特に2番目の段落を参照してください。

メタキャラクタ(例えば !"#$%&'()*+,./:;<=>?@[\]^``{|}~ のような)メタ文字を名前のリテラル部分として使うには、バックスラッシュ2つでエスケープする必要があります。 \\ . 例えば id="foo.bar" である場合、セレクタ $("#foo\\.bar") . W3C CSS 仕様では 有効な CSS セレクタに関する完全なルール一式が含まれています。 . また、Mathias Bynens のブログエントリにある 識別子のための CSS 文字エスケープシーケンス .