2

私はこのようなHTMLを持っています(うん、それは少し奇妙ですが、それは既存のプロジェクトです):

<table>
<tr id="21.30---22.00">
    <td class='51'>Text</td>
</tr>
</table>​

そしてこのようないくつかのJS:

$(document).ready(function(){
    var time = "21.30---22.00";

    // jQuery needs . to be escaped to \\.
    // Regex needs \ to be escaped as \\. 
    // JS needs \ to be escaped as \\.

    time = time.replace(/\./g,'\\\\\\.');

    $("tr#" + time + " td.51").css("color","blue");
});​

実際には、時間文字列はJSONから生成されるため、奇妙な方法です。

これは以前のバージョンのjQueryで機能しましたが、1.8では機能しません。おそらくSizzleの変更が原因です。これが機能しない例です。

jQuery 1.7.2: http: //jsfiddle.net/VnA4m/

jQuery 1.8: http: //jsfiddle.net/VnA4m/1/

time = "21.30---22.00"1.8で動作するセレクターに移動する方法についてのアイデアはありますか?

4

2 に答える 2

5

このコードを試してください---属性セレクターを使用して選択します

$("[id='21.30---22.00']").foo
于 2012-08-17T12:24:03.660 に答える
3

正規表現はsをエスケープする必要はありません\-正規表現の唯一のものはです.。また、jQueryの要件は、スラッシュを受け取る必要があることです。そのため、JavaScriptインタープリターがそれを消費しないように2つ必要です。

したがって、\\.十分なはずです:http: //jsfiddle.net/VnA4m/2/。これはjQuery1.7.2でも機能します-無関係なスラッシュが実際にそこで機能した理由はわかりません。バグのようです-\\\\.失敗し、\\\\\\.再び機能します...

于 2012-08-17T12:24:14.063 に答える