Jquery append <select>не работает в IE7, но работает в Firefox - PullRequest
2 голосов
/ 07 апреля 2009

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

Код:

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

Ответы [ 4 ]

7 голосов
/ 07 апреля 2009

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

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

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

1 голос
/ 27 апреля 2009

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

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

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

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

0 голосов
/ 19 января 2010

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

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

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

$.each(data,  
       function(key,value){  
           $("option").attr("value", key.toString()) 
                .text(value.toString()) 
                .appendTo("#select1");  
        }); 
0 голосов
/ 27 апреля 2009

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


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

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

...