次のようなjqueryセレクターがあります。
var val = "John's cars";
$('#subject input[value="'+val+'"]')
これは、Firefox、Chrome、Internet Explorer 8 では正常に機能しますが、IE 6 または IE7 では機能しません。問題は、テキスト検索の ' です。問題のすべての入力をループして文字列比較を行う以外に、この問題を回避する方法を誰かが知っていますか?
次のようなjqueryセレクターがあります。
var val = "John's cars";
$('#subject input[value="'+val+'"]')
これは、Firefox、Chrome、Internet Explorer 8 では正常に機能しますが、IE 6 または IE7 では機能しません。問題は、テキスト検索の ' です。問題のすべての入力をループして文字列比較を行う以外に、この問題を回避する方法を誰かが知っていますか?
これを試して:
var val = "John's cars";
$('#subject input').filter(function() {
return this.value == val;
});
'
バックスラッシュでエスケープしてみてください
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に感謝します。
検索値のアポストロフィだと思います-を使用してエスケープしてみてください
"John\'s cars"