سؤال

وأنا محاولة لإعادة ملء القائمة المنسدلة. أنا إجراء مكالمة اياكس لاسترداد قائمتي. عندما يكون لدي قائمة جديدة، وإزالة كافة الخيارات من عنصر حدد وإدراج القيم الجديدة (حوالي 100 الخيارات). هذا وتعمل كبرى على الإصدارات الأحدث من IE و Firefox. التحديث هو لحظة تقريبا. ومع ذلك، في IE6، هذه العمليات بطيئة حقا المتصفح إلى أسفل. تتم إزالة مربع القائمة المنسدلة تقريبا يصبح الرسوم المتحركة كخيارات منه، واستمر هذا الوضع لعدة ثوان. هل هناك أي طريقة لتسريع هذا الأمر خارج المقارنة القائمة القديمة إلى النظام الجديد وإزالة فقط / إضافة البنود التي تغيرت؟

$("#myselect").children.remove();

$.each(myList, function(i, val) {
   $("<option>").attr("value", val.myID)
                .text(val.myText)
                .appendTo("#myselect");
});
هل كانت مفيدة؟

المحلول

وماذا لو قمت بإنشاء عنصر جديد والتحول بها؟

var newSelect = $("<select></select>");
$.each(myList, function(i, val) {
    $("<option>").attr("value", val.myID)
                 .text(val.myText)
                 .appendTo(newSelect);
});
$("#myselect").replaceWith(newSelect);

نصائح أخرى

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

$("#myselect").html('');

وتعديل حلقة بحيث يمكنك إنشاء أتش تي أم أل لكل خيار، وأدخله في اختيار باستخدام

$('#myselect').html(optionsHTML); 

واعتمادا على الأداء، قد تتمكن من محاولة حلا وسطا بين هذا الحل والحل karim79 (أي. إزالة الخيارات مع أتش تي أم أل ()، وإلحاق لهم باستخدام مجموعة بدلا من إنشاء HTML عادي).

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