Jquery add <select> не работает в IE7, но работает в Firefox
-
05-09-2019 - |
Вопрос
Я получаю данные из базы данных через 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");
});
<> каким-то образом пропал.