Ярлыки

пятница, 24 декабря 2010 г.

jQuery и совсем не обычные select'ы в IE

Решил наваять маленькую заметочку — вдруг кому поможет Улыбается.

Итак, у меня в проекте стояла задача запрограммировать умные, специфические вложенные селекты, с неограниченной вложенностью. Суть задачи в том, чтобы при выборе первого селекта проверялось наличие дочерних элементов дерева Nested Sets и если они есть, то выезжает следующий селект, получает данные с сервера и добавляет новые option.

Так вот, сделал. Запрограммировал кучу разных умных и удобных вещей, сижу себе довольный и офигеть как горжусь собой (действительно очень удобно пользоваться такими селектами, отлично вышло). Потом открываю IE и мой фэйс трижды сменил цвет Смеётся

Прикиньте, вместо того, чтобы были надписи в селектах внутри был просто белый фон! Т.е. список есть, он раскрывается, но ты не видишь, что выбираешь. В ход пошел Firebag, но все было тщетно - логика работала как часы. Все было просто прелестно во всех браузерах кроме моего любимого IE. Несколько раз за эти 2 недели возвращался до этого вопроса и никак не мог понять, почему фон шрифта в селекте стал белым и не меняется (это я раньше так думал)?

Но сегодня на меня нашло прозрение: решил просто скинуть в обычный alert html() селекта. Посмотрел в лисе — все отлично и соответствует нормам. Посмотрел в IE, а там нету самих названий элементов — он их не добавляет. Пришлось лезть в код, вот:

  1. data = $.parseJSON(data);
  2. for (key in data) $(target).append(new Option(data[key],key));

Так я создавал новые элементы селекта. Как выявилось Эксплуататор неверно воспринимает мои указания кодом. Пришлось немного потанцевать с бубном и решение нашлось:

  1. data = $.parseJSON(data);
  2. for (key in data) $(target).append("+data[key]+"' value='"+key+"'>"+data[key]+""); // fixed IE bug

Работает во всех браузерах. Думаю, кому-то помог Улыбается


Источник.

Комментариев нет:

Отправить комментарий