2

私の顧客ベースはIE8とIE7が非常に高いので、私に同行してください。IE7のjQueryセレクタの特殊文字

私は階層を表すページ上にオブジェクトを持っています - 注文/ラインアイテムタイプの構造を考えてください。ページ上のオブジェクトは、私はIE7でのみ、このセレクタは動作しません、問題見ている

<input type="text" name="Orders[0].LineItems[1]_lineItemTotal" /> 

です:

var total = $('[name="Orders[0].LineItems[1]_lineItemTotal"]').val(); 

これを追跡し、我々が期間を逃れた場合と思われます

var total = $('[name="Orders[0]\\.LineItems[1]_lineItemTotal"]').val(); 

私の懸念を引き起こしているものは、これがうまく働くよう、それ自体が問題の原因期間とは思われないということです::

、私たちは、この作業を行うことができます
var orderId = $('[name="Orders[0].OrderId"]'); 

誰でも何が起こっているか、またはこれにアプローチする最善の方法についての洞察はありますか?私はHTML要素の命名体系に多額の投資をしています。これは、Chrome、IE9、IE8などのIE7に対するQAテストがこれをうまく処理しているように見える場合にのみ発生します。

私はjQuery 1.7.1を使用しています。

+1

[Orders [0]。[1] _lineItemTotal'の名前は、奇妙なものにするためにはうまくいきますが、その期間の後に非特殊文字を置くとすぐに機能しなくなります。バックスラッシュは今のところ最良のアプローチだと思います。 – alecananian

+0

私は同意します - 答えとしてそれを投げ、私は受け入れます。 – reallyJim

答えて

2

物事をさらに奇妙にするために、Orders [0]の名前のように見えます。 1 _lineItemTotalはうまくいきますが、その期間の後に特殊文字以外の文字を置くとすぐに機能しなくなります。

バックスラッシュは今のところ最良のアプローチだと思います。

jQuery Documentationは、CSSセレクタでエスケープ文字に関する情報を提供しますが、ここでは属性を設定する場所に適用する必要はありません。

+0

これは私たちが行ったことです。「正しい」ことです。ありがとう! – reallyJim

0

これが最も推奨されるソリューション、あなたは本当にイライラしている場合だけの提案ではないかもしれない、あなたは=よりアクセス名を割り当てることはできませんし、間違いなくそのname属性の仕事を作る方法を見つけることができません)

var total = 0; 
$('input[type=text]').each(function() { 
    if ($(this).attr('name') == 'Orders[0].LineItems[1]_lineItemTotal') { 
    total = $(this).val(); 
    return false; 
    } 
}