-4

トピックが重複していると思われるかもしれませんが、違います。これらの他の推奨される方法を試しましたが、うまくいきませんでした。

次のような変数があります。

var $id = "test.1";

次の行を使用しようとすると、うまくいきます。

$("#test\\.1")

しかし、使用しようとする$('#'+'test\\.1')と機能しません。

原因と対処方法を教えてください。

更新:質問を継続的に編集して申し訳ありません。次の質問ではそれを避けようとします。

だから、これは私の問題です: http://jsfiddle.net/HzfLN/8/

私が使用した:

var id = "text.1".replace(/[.]/gi, "\\\\");
$('#'+id).bind("click", function(){
   //Do my stuff
});

「\」の代わりに 4 つのスラッシュ「\\」を使用しようとしました。だから私はそれを修正しました。

ありがとうございました。

4

3 に答える 3

1

最初の例では、引用符が一致していません。これは単に機能しません。変更する必要があります:

$('#test\\.1")

に:

$('#test\\.1') /* or */
$("#test\\.1")

あなたの他の例については。あなたが現在持っているものは正常に動作します

$('#test\\.1')
$('#' + 'test\\.1')
于 2013-06-13T09:16:07.867 に答える
1

ピリオドをエスケープするには、2 つのバックスラッシュを使用します。

$('#test\\.1');

デモ

jQueryドキュメントから:

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

于 2013-06-13T09:16:19.037 に答える
0

回避策として、次を使用できます。

$('[id="test.1"]')

http://jsfiddle.net/uWKXJ/

于 2013-06-13T09:14:22.223 に答える