Вопрос

Я получаю данные из базы данных через AJAX и добавляю теги к оператору выбора.Следующий код работает в Firefox, но лишь частично в IE.Проблема в IE заключается в том, что он создает элементы опций в раскрывающемся списке, но значение атрибута «текст» пусто (раскрывающийся список отображается с 30 пустыми строками!Однако значение атрибута «value» устанавливается правильно (это первичный ключ из моей базы данных).Есть ли другое поле, которое мне нужно установить в IE, кроме «текста»?Я думаю, что проблема заключается в выделенном жирным шрифтом тексте в приведенном ниже коде.Кстати, значение не пустое, и я попытался вставить вместо него строковый литерал, но в IE он все еще пуст.

Код:

$.each(data, function(key,value){
    $("<option>").attr("value", key).attr("text",value).appendTo("#select1");
});
Это было полезно?

Решение

Вместо этого я бы попытался использовать .text():

  $.each(data, 
       function(key,value){ 
           $("option").attr("value", key)
                .text(value)
                .appendTo("#select1"); 
        });

Я думаю, это то, чего вы добиваетесь?

Другие советы

Давайте попробуем это еще раз с блочными кавычками:

Решение должно быть:

$.each(data, 
       function(key,value){ 
           $("<option>").attr("value", key)
                .text(value)
                .appendTo("#select1"); 
        });

«опции» должны быть окружены <>

altCognito прав...однако, если вы перебираете целые числа, убедитесь, что вы используете

key/value.toString() — хотя jQuery не выдаст никаких ошибок и обработает их, это позволит избежать дополнительных накладных расходов.

все дело в производительности, верно?:)

$.each(data,  
       function(key,value){  
           $("option").attr("value", key.toString()) 
                .text(value.toString()) 
                .appendTo("#select1");  
        }); 

Я не думаю, что опубликованное решение является правильным.Я считаю, что это должно быть:


$.each(data, function(key,value){ 
           $("").attr("value", key)
                .text(value)
                .appendTo("#select1"); 
        });

нет


$.each(data, function(key,value){ 
           $("option").attr("value", key)
                .text(value)
                .appendTo("#select1"); 
        });

<> каким-то образом пропал.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top