Axl Rose の wiki ページには、次の ID を持つ要素が含まれています。
1983.E2.80.931986:_Early_years
この要素を取得するために使用$('#1983.E2.80.931986:_Early_years')
していますが、失敗します。
この要素を ID で選択したい場合に使用する正しいセレクターは何ですか?
Axl Rose の wiki ページには、次の ID を持つ要素が含まれています。
1983.E2.80.931986:_Early_years
この要素を取得するために使用$('#1983.E2.80.931986:_Early_years')
していますが、失敗します。
この要素を ID で選択したい場合に使用する正しいセレクターは何ですか?
ドキュメントから直接:
メタ文字 ( など
!"#$%&'()*+,./:;<=>?@[\]^&a{|}~
) を名前のリテラル部分として使用する場合は、2 つのバックスラッシュで文字をエスケープする必要があります。\\.
たとえば、 を含む要素がある場合id="foo.bar"
は、セレクターを使用できます$("#foo\\.bar")
。
結果:
jQuery.escapeSelector = function(str) {
return str.replace(/[!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~]/g, "\\$&");
}
// ...
$('#' + $.escapeSelector('1983.E2.80.931986:_Early_years'))
そのためにJavaScriptを使用できます
document.getElementById('1983.E2.80.931986:_Early_years')
そのような文字があるので、個人的には、次のように ID 自体で検索するのが最も簡単で読みやすい方法だと思います。
$('[id*="1983.E2.80.931986:_Early_years"]') // will search for the ID anywhere
文字などをエスケープする必要があるよりもはるかに簡単で混乱の少ない方法です。特に、ID 名を何らかの方法で変更した場合は、その名前について心配する必要がないためです。
この IDをバックエンド コードから動的に構築する場合、これは最も理にかなっています。常に正しく準備され、機能します。
'\\' を使用してエスケープします。
$('#1983\\.E2\\.80\\.931986\\:_Early_years')
:
and をエスケープする.
$('#1983\\.E2\\.80.931986\\:_Early_years')
:は css 疑似クラス (例: : hover) によって予約されているため、選択を妨害します。をバックスラッシュしてみてください: