4

ページに次のdivがあります(変更できません)。

   <div id=":0.control">Click me</div>

ここで、jQueryクリックハンドラーを追加します

$("#:0.control").click(function () {
         alert('Clicked');
     }
 );

上記はエラーになります。解決策はありますか?

4

3 に答える 3

3

それ以外の

$("#:0.control")

試す

$('div[id="\\:0\\.control"]')

デモ

また

$("#\\:0\\.control") // better that previous one

デモ

于 2012-06-14T07:44:54.220 に答える
3

セレクターで特殊文字をエスケープできます。

$("#\\:0\\.control").click(function () {
     alert('Clicked');
});​

これが実際のです。

HTML5 doctypeを使用していない限り、IDは無効であることに注意してください。また、特殊文字のエスケープは、別の回答のように属性セレクターを使用するよりも大幅に高速であることに注意してください。

ここに画像の説明を入力してください

この理由は、ブラウザがSizzlegetElementByIdに依存するのではなく、の速度を利用できるためです。querySelector

于 2012-06-14T07:45:42.110 に答える
1

これは醜いですが、機能します:

$(document.getElementById(":0.control"))

場合によっては、idが変数に格納されているときは、次を使用する必要があります。

var id = ":0.control";
$(document.getElementById(id))

それ以外の場合、pureを使用する場合は、jQueryスラッシュを追加する必要があります。

より複雑な例:

var idArray = [":bla-bla","bla[]","commonId"];
$.each( idArray, function(i,id){
    $(document.getElementById(id)) //do some stuff
    //Otherwise, when using pure jQuery, we need to add slashes before ':','[',']' characters 
});
于 2012-06-14T07:45:48.553 に答える