IE6をダンプすること以外の提案...私はそれを制御することはできません:)
私がやろうとしていることの簡単な概要:選択した要素を持つフォームがあります。ユーザーがselectで特定のオプション(以下のコードのid type2)を選択すると、新しいselectを含むdiv構造が表示されます。phpを使用してdivのselectにデータを入力するため、新しいdiv構造とその子を既存の構造(id pdProgramDiv1)のクローンにします。選択が複製されたら、クローンのIDとdivの名前、およびその子ラベルを変更して、フォーム情報が送信phpスクリプトに渡されるため選択する必要があります。一意のIDがない場合は、クエリ文字列にシリアル化されますが、phpの$_POST配列には特定のIDの最後の値のみが含まれます。
Firefox sighで完全に機能し、IE6でIDと名前を変更できないコードを含めました。このコードは、一部のコードほど簡潔ではない場合があります。私はまだjQueryにかなり慣れていません。
$('#type2').change(function() {
if ($('#type2 option:selected').text() == 'Program Director') {
$('#pdProgramDiv1').clone().attr({id: 'pdProgramDiv2', name: 'pdProgramDiv2'}).appendTo($('#type2Div'));
$('#pdProgramDiv2 > #pdProgram1').attr({id: 'pdProgram2', name: 'pdProgram2'});
$('#pdProgramDiv2 > label').attr('for', 'pdProgram2');
} else {
$('#pdProgramDiv2').hide();
}
});
私は周りを見回して、連鎖ではなく変数を使用し、オブジェクトリテラル(またはマップ)を使用するのではなくattrを個別に呼び出してみましたが、何も役に立ちません。すべてのバリエーションはFFで正常に機能しますが、IE6では喜びはありません。
これは既知の問題ですか、それとも誰かが変更を行う方法を教えてもらえますか?
これを機能させることができない場合は、すべての要素を作成して非表示にする必要があると思いますが、それはあまり良くないようです。
いつものようによろしくお願いします!
更新:解決済み
私のやり方の誤りを見つけてくれた人々に感謝します。問題を解決することになったコードを投稿したかったのです。以下の受け入れられた答えへの私のコメントで言ったように、修正は完全に理にかなっています。少し恥ずかしかったですが、見たことがありませんでしたが、時々新鮮な目が必要になります!唯一の変更は、select IDではなく子selectを選択し、divの名前attr割り当てを削除することです。これは、前述のように、何も実行しないためです。
$('#type2').change(function() {
if ($('#type2 option:selected').text() == 'Program Director') {
$('#pdProgramDiv1').clone()
.attr('id', 'pdProgramDiv2')
.appendTo($('#type2Div'));
$('#pdProgramDiv2 > select').attr({
id: 'pdProgram2',
name: 'pdProgram2'});
$('#pdProgramDiv2 > label').attr('for', 'pdProgram2');
} else {
$('#pdProgramDiv2').hide();
}
});