2

次のようなjqueryセレクターがあります。

var val = "John's cars";
$('#subject input[value="'+val+'"]')

これは、Firefox、Chrome、Internet Explorer 8 では正常に機能しますが、IE 6 または IE7 では機能しません。問題は、テキスト検索の ' です。問題のすべての入力をループして文字列比較を行う以外に、この問題を回避する方法を誰かが知っていますか?

4

3 に答える 3

4

これを試して:

var val = "John's cars";
$('#subject input').filter(function() {
    return this.value == val;
});
于 2009-10-07T19:21:51.700 に答える
3

'バックスラッシュでエスケープしてみてください

var val = "John\'s cars";
$('#subject input[value="'+val+'"]')

jQueryから

セレクターの特殊文字

上記のメタ文字を名前のリテラル部分として使用する場合は、バックスラッシュ () で文字をエスケープする必要があります。Javascript は文字列リテラルのエスケープ シーケンスにバックスラッシュを使用するため、1 つのバックスラッシュが文字列に挿入されるように、文字列リテラルで 2 つのバックスラッシュ (\) を使用する必要があります。

例:

"#foo\\:bar"
"#foo\\[bar\\]"
"#foo\\.bar"

エスケープする必要がある文字の完全なリスト:#;&,.+*~':"!^$[]()=>|/

編集:

値は文字列リテラルであるため、ダブルエスケープする必要があります。だからこれはうまくいく

var val = "John\\'s cars";
$('#subject input[value="'+val+'"]')

それを指摘してくれたbobinceに感謝します。

于 2009-10-07T19:23:02.940 に答える
0

検索値のアポストロフィだと思います-を使用してエスケープしてみてください

"John\'s cars"
于 2009-10-07T19:23:15.063 に答える