44

サイト用に事前に作成されたモジュールに取り組んでおり、 id を持つ要素をターゲットにする必要がありtest:twoます。現在、この要素にはコロンが含まれているため、jQuery はおそらく「2」を疑似クラスとして認識しています。この要素を jQuery でターゲットにする方法はありますか?

また、IDの変更はできません。私ができるなら、私を信じてください。

例をまとめました:

$('#test').css('background','red');
$(document.getElementById('test:two')).css('background','blue');
$('#test:two').css('background','green');
<script src="//code.jquery.com/jquery-1.6.3.js"></script>

<div id="test">test</div>
<div id="test:two">test two</div>

4

4 に答える 4

84

\\:でコロンをエスケープするだけです。

$('#test\\:two');

http://jsfiddle.net/zbX8K/3/


ドキュメントを参照してください: CSS 表記で使用される文字を持つ ID で要素を選択するにはどうすればよいですか? .

于 2011-09-15T16:27:01.967 に答える
18

jQuery IDセレクターのドキュメントから:

ID にピリオドやコロンなどの文字が含まれている場合は、これらの文字をバックスラッシュでエスケープする必要があります。

文字列ではバックスラッシュ自体をエスケープする必要があるため、次のようにする必要があります。

$("#test\\:two")

$('#test').css('background','red');
$(document.getElementById('test:two')).css('background','blue');
$('#test\\:two').css('background','green');
<script src="//code.jquery.com/jquery-1.6.3.js"></script>

<div id="test">test</div>
<div id="test:two">test two</div>

CSS.escape(...)また、セレクター式内で特別な意味を持つ可能性のある文字を処理する組み込み関数を使用するオプションもあります。

$("#" + CSS.escape("test:two"))

$('#test').css('background','red');
$(document.getElementById('test:two')).css('background','blue');
$("#" + CSS.escape("test:two")).css('background','green');
<script src="//code.jquery.com/jquery-1.6.3.js"></script>

<div id="test">test</div>
<div id="test:two">test two</div>

于 2011-09-15T16:27:23.590 に答える
12

属性 equals セレクターを使用します。

$('[id="test:two"]')
于 2011-09-15T16:27:46.500 に答える
7

属性セレクターを使用してみてください

$(document).ready(function() {
    $('div[id="test:two"]').each(function() {
       alert($(this).text());
    }); 
});

フィドル: http://jsfiddle.net/zbX8K/2/

于 2011-09-15T16:27:49.520 に答える