2009-04-07 2 views
2

Я получаю данные из базы данных через AJAX и добавляю теги к оператору select. Следующий код работает в firefox, но только частично в IE. Проблема в IE заключается в том, что в раскрывающемся списке создаются элементы опций, но значение атрибута «текст» пусто (раскрывающееся меню появляется с 30 пустыми строками! Однако значение атрибута «значение» устанавливается правильно (это первичный ключ hte из моей базы данных) .Есть ли другое поле, которое мне нужно установить в IE, отличном от «текста»? Полужирный текст в приведенном ниже коде - это то место, где я думаю, что проблема кроется. BTW, значение не пустое, и я попытался вставить . строковым на своем месте, и он по-прежнему пусто в IEJQuery append <select> не работает в IE7, но работает в firefox

код:

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

ответ

7

Я хотел бы попробовать использовать .text() вместо того, чтобы:

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

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

+0

Да, ваше решение работает именно в IE и Firefox! В Интернете есть много примеров использования .attr («text», value), которое, я думаю, неверно. Большое спасибо за решение! – Dan

+1

Помните также, что .text() автоматически ускользает от любого HTML-кода, установленного внутри него, то есть .text («foo») будет установлен как «<em> foo </em >». Если вы хотите включить туда HTML, используйте .html(). – cdmckay

0

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


$.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"); 
     }); 

<> 's были понижены так или иначе.

1

Давайте попробуем, что снова с блоком цитат:

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

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

"варианты" должна быть окружена <>

0

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

ключ/значение.toString() - в то время как jQuery не будет вызывать ошибок и будет обрабатывать его, это будет void дополнительные накладные расходы.

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

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

Я нашел, что в IE7 (режим стандартов), если вы используете $ ('

Смежные вопросы