IE6属性(IDおよび名前)をJQUERY ATTR CALLで変更していない - 提案はありますか?

StackOverflow https://stackoverflow.com/questions/2202389

質問

IE6を捨てる他の提案

私がやろうとしていることの簡単な概要:選択した要素を含むフォームがあります。ユーザーがselect(以下のコードのIDタイプ2)で特定のオプションを選択すると、新しい選択を含むDIV構造を表示します。 PHPを使用してdivのselectを入力するため、新しいdiv構造とその子供が既存のもの(id pdprogramdiv1)のクローンになりたいです。選択がクローン化されたら、divとその子ラベルのクローンのIDと名前を変更し、フォーム情報が送信PHPスクリプトに渡されているために選択する必要があります。一意のIDがない場合、クエリ文字列にシリアル化されていますが、PHPの$ _POSTアレイには、特定のIDの最後の値のみが含まれます。

Firefoxで完全に機能するコードを含めました はぁ, 、および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();
    }
}); 

私は周りを見回し、チェーンではなく変数を使用してみました。また、オブジェクトのリテラル(またはマップ)を使用するのではなく、個々の呼び出しをタートに呼びましたが、何も役に立ちませんでした。すべてのバリエーションはFFでは正常に機能しますが、IE6では喜びはありません。

これは既知の問題ですか、それとも変更を行う方法を教えてもらえますか?

これを機能させることができなければ、すべての要素を作成して隠す必要があると思いますが、それはそれほど良くないようです。

いつものように事前に感謝します!

更新:解決しました

私のやり方の誤りを見つけた人々に感謝します。問題を解決することになったコードを投稿したかったのです。以下の受け入れられた答えへのコメントで言ったように、修正は完全に理にかなっています。少し恥ずかしいことに私はそれを見ませんでしたが、時には新鮮な目が必要です!唯一の変更は、選択されたIDではなく子供の選択を選択し、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();
    }
}); 
役に立ちましたか?

解決

あなたの問題はここにあると思います...

$('#type2').change(function() {
    /* snip */
        $('#pdProgramDiv1').clone().attr({id: 'pdProgramDiv2', name: 'pdProgramDiv2'}).appendTo($('#type2Div'));

        $('#pdProgramDiv2 > #pdProgram1').attr({id: 'pdProgram2', name: 'pdProgram2'});
    /* snip */
});

コンテナをクローン化し、IDを切り替え、ページに挿入します。コンテナは問題ありませんが、ページは2つの要素をid'd#pdprogram1にします。 document.getElementByIDはそれを好まないでしょう。

コードをリファクタリングして、IDではなくタグで選択要素を検索します。

他のヒント

IE6の問題でクラッシュしたばかりだと思います。なぜなら、ノードのクローニングをうまく処理しないからです。クローン要素の名前とIDの修正に正確に失敗します...

より詳しい情報 ここ.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top