9

Axl Rose の wiki ページには、次の ID を持つ要素が含まれています。

1983.E2.80.931986:_Early_years

この要素を取得するために使用$('#1983.E2.80.931986:_Early_years')していますが、失敗します。

この要素を ID で選択したい場合に使用する正しいセレクターは何ですか?

4

6 に答える 6

17

ドキュメントから直接:

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

結果:

jQuery.escapeSelector = function(str) {
  return str.replace(/[!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~]/g, "\\$&");
}

// ...

$('#' + $.escapeSelector('1983.E2.80.931986:_Early_years'))
于 2012-08-07T12:46:49.180 に答える
3

そのためにJavaScriptを使用できます

document.getElementById('1983.E2.80.931986:_Early_years')

于 2012-08-07T12:48:51.053 に答える
3

そのような文字があるので、個人的には、次のように ID 自体で検索するのが最も簡単で読みやすい方法だと思います。

$('[id*="1983.E2.80.931986:_Early_years"]')​​​​​​​ // will search for the ID anywhere

文字などをエスケープする必要があるよりもはるかに簡単で混乱の少ない方法です。特に、ID 名を何らかの方法で変更した場合は、その名前について心配する必要がないためです。

この IDをバックエンド コードから動的に構築する場合、これは最も理にかなっています。常に正しく準備され、機能します。

http://jsfiddle.net/Yt8D9/

于 2012-08-07T12:47:53.593 に答える
1

'\\' を使用してエスケープします。

$('#1983\\.E2\\.80\\.931986\\:_Early_years')
于 2012-08-07T12:49:34.170 に答える
1

:and をエスケープする.

$('#1983\\.E2\\.80.931986\\:_Early_years')
于 2012-08-07T12:46:29.270 に答える
1

:は css 疑似クラス (例: : hover) によって予約されているため、選択を妨害します。をバックスラッシュしてみてください:

于 2012-08-07T12:47:00.797 に答える