IE6 لا يتغير السمات (المعرف والاسم) مع مكالمة jquery Atte - أي اقتراحات؟

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

سؤال

اقتراحات أخرى أن إلقاء IE6 وهذا هو ... لا أستطيع التحكم في ذلك :)

ملخص سريع لما أحاول القيام به: لدي نموذج مع عناصر محددة. عندما يختار المستخدم خيارا محددا في تحديد (Type2 ID2 في التعليمات البرمجية أدناه)، أقوم بعرض بنية DIV التي تحتوي على تحديد جديد. أريد أن يكون هيكل DIV الجديد وأطفاله استنساخا من واحد (معرف PDProgramdiv1) لأنني أستخدم PHP لملء التحديد في DIV. بمجرد استنساخ المحدد، أحتاج إلى تغيير معرف استنساخ واسم DIV وعلامة الطفل وحددها لأن معلومات النموذج تتم تمريرها إلى نصي إرسال PHP. إذا لم يكن لديهم معرفات فريدة من نوعها، على الرغم من أنها متسلسلة في سلسلة الاستعلام، فإن صفيف $ _Post في PHP يتضمن فقط القيمة الأخيرة لمعرف معين.

لقد قمت بتضمين الرمز الذي يعمل تماما تماما في فايرفوكس تنهد, وفشل في تغيير المعرفات والأسماء في IE6. قد لا يكون هذا الرمز موجزا كما البعض؛ ما زلت جديد جدا في جيس.

$('#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();
    }
}); 

لقد نظرت حولها، وحاولت استخدام المتغيرات بدلا من الذكار، والدعوات الفردية إلى AWS بدلا من استخدام الكائن الحرفي (أو الخريطة)، ولكن لا شيء يساعد. تعمل جميع الاختلافات بشكل جيد في FF، ولكن لا فرحة في IE6.

هل هذه مشكلة معروفة، أو يمكن لأي شخص أن يخبرني بالطريقة لجعل التغييرات تحدث؟

إذا لم أتمكن من الحصول على هذا للعمل، أعتقد أنني سأضطر إلى إنشاء جميع العناصر وإخفائها، لكن هذا لا يبدو جيدا.

شكرا مقدما كما هو الحال دائما!

تحديث: حلها

شكرا جزيلا على الناس الذين وجدوا خطأ طرقي. أردت نشر الرمز الذي ينتهي لحل المشكلة. كما قلت في تعليقي على الإجابة المقبولة أدناه، فإن الإصلاح يجعل الشعور المثالي. محرج قليلا لم أرها، ولكن في بعض الأحيان هناك حاجة إلى زوج جديد من العينين! التغيير الوحيد هو مع تحديد تحديد الطفل بدلا من معرف المحدد، وإزالة تعيين اسم اسمه على DIV، لأنه كما ذكر، لا يفعل شيئا.

$('#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 */
});

أنت تستنسخ الحاوية، والتحويل هو المعرف، وإدخاله مرة أخرى إلى الصفحة. الحاويات جيدة، ولكن الصفحة الآن Cotnains عنصرين ID'D # PDProgram1. document.getelementByID لن يحب ذلك.

إعادة تكوين التعليمات البرمجية للبحث عن عنصر SELECT من خلال علامة معرفها بدلا من معرفها.

نصائح أخرى

أعتقد أنك قد تحطمت للتو في مشكلة مع IE6، لأنه يتعامل مع استنساخ العقدة بشكل سيئ، إذا كان ذلك على الإطلاق. فشل بدقة في إصلاح اسم ومعرف العناصر المستنسخة ...

مزيد من المعلومات هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top