3

これは単純な問題のようですが、これまでのところ、私はほぼすべてのターンで妨害されてきました。

複数の選択から返されるIDのリストを使用して、jqueryとjsonを使用してユーザーインターフェイスを動的に構築しています。そのインターフェースの一部には、次のように動的に作成されるユーザーの位置合わせが含まれています。

$('<textarea>').attr({
'rows': '5', 
'cols': '50', 
'name': appId,  
'id': 'AppJust' + appId}).appendTo('#contentColumn>#AppPanel' + appId);

さらにその過程で、私は次のコードを持っています:

var userJustification = $('textarea[name=' + appId + ']').val() ;

FFでは、アラートuserJustificationを送信すると、textareaに入力されたテキストが表示されます。

IEでは、アラートuserJustificationを出すとundefined

私もvar userJustification = $('textarea[name=' + appId + ']').attr('value') ; まったく同じ結果で試しました。

私が完全に変更した場合:

var userJustification = $('textarea[name=' + appId + ']').val() ;

に:

var userJustification = $('textarea#AppJust' + appId).val() ;

できます...

私の質問は:

名前アプローチがIEではなくFFで機能するのはなぜですか?

編集

スコットが投稿した情報を使用して、私は興味をそそられ、コードを少しいじくり回しました。

var userJustification = $('textarea[name=' + appId + ']').val() ; 

しかし、それでも私の環境(IE7)では機能しません...すべての目的と目的が適切に機能するため、理由や方法がわかりません。スコットのフィドルはこれを証明しています。

したがって、正当な理由もなく(実際には偶然に)コードに小さな変更を加えました:

var userJustification = $('textarea[name = ' + appId + ']').val() ; 

(セレクター内の「=」の前後のスペースに注意してください)

そしてそれは機能します...最初はappIdが整数であることに関係があると思いました...しかし、フィドルでも「One」を25に変更すると...それでも正しく機能します。

FFで検証して、どのようにレンダリングされているかを確認しました。これは、作成時にテキスト領域がどのように表示されるかの例です...異常なことは何もありません。

<textarea id="AppJust40" rows="5" cols="50" name="40"></textarea>

ページ自体のレンダリング方法と関係があるのでしょうか。Apacheサーバー上のApexアプリケーション????

4

2 に答える 2

0

非常に奇妙なことですが、私が考えることができるのは、IEが属性セレクター(CSS、[name =])をサポートしていないということだけです。ただし、JQueryは独自のエンジンを使用してDOM内の要素を「検索」するため、これは重要ではありません。

これをJQueryのバグとしてログに記録することをお勧めします。

于 2011-04-25T16:04:04.393 に答える
0

コメントでの会話によると、属性値の前後に引用符を追加すると、IE7の問題が解決されます。

$('textarea[name="' + appId + '"]').val();

私が最初にコメントを入れたjsFiddleデモは、引用符なしでIE7とIE8の両方で機能します。

于 2011-04-25T19:24:55.107 に答える