Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.12.2011, 13:38
Аспирант
Отправить личное сообщение для Arigato Посмотреть профиль Найти все сообщения от Arigato
 
Регистрация: 11.12.2011
Сообщений: 42

Событие на динамически созданные элементы списка
Простая задачка: заполнить список произвольными данными, удалять строки списка по двойному клику. Решение:
var body = document.getElementsByTagName ("body")[0];
  var select = document.createElement ("select"); 
  select.size = 16;
  body.appendChild (select);
  for ( var i = 0; i < 16; i++ )
  {
    option = new Option ("Option #" + i.toString(), i, false, false);
    select.options[select.options.length] = option;
    option.ondblclick = function() {select.remove (select.selectedIndex)};
  }

Список заполняется во всех браузерах, а вот удаление работает везде, кроме IE. В IE почему-то не срабатывает навешивание события option.ondblclick.
Если же событие навесить не на элементы списка, а на весь список:
select.ondblclick = function () {select.remove (select.selectedIndex)};
То работает везде, в том числе и в IE.

Поясните, с чем связана эта ситуация? Что элемент select, что элементы option, создаются динамически. На select событие работает, а на option - нет. Непонятно...
Ответить с цитированием
  #2 (permalink)  
Старый 11.12.2011, 17:11
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Arigato
Поясните, с чем связана эта ситуация? Что элемент select, что элементы option, создаются динамически. На select событие работает, а на option - нет. Непонятно...
Об этом уже писалось в одном из топиков форма, что не все браузеры элемент option считают за элемен по которому можно обрабатывать события. Пишите собственный список или идите другим путем.
Ответить с цитированием
  #3 (permalink)  
Старый 11.12.2011, 20:09
Аспирант
Отправить личное сообщение для Arigato Посмотреть профиль Найти все сообщения от Arigato
 
Регистрация: 11.12.2011
Сообщений: 42

Ясно, спасибо!
А другим путем - это каким?

Мне это чисто в познавательных целях интересно, т.к. описанная задача успешно решается и если событие на сам select навешать, более того, это даже не моя задача, просто стало интересно, почему в IE не срабатывают события на option. Видимо, все, кроме IE, option рассматривают, как самостоятельный элемент.
Ответить с цитированием
  #4 (permalink)  
Старый 11.12.2011, 20:17
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Arigato,
мне просто любопытно, как вообще можно сделать двойной клик на списке, ведь селект закрывается при первом же клике. Не понимаю смысла в двойном клике. Хотя наверно просто не нужно этого было никогда.
Ответить с цитированием
  #5 (permalink)  
Старый 11.12.2011, 21:56
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Arigato, может это будет Вам полезно.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 11.12.2011 в 22:03.
Ответить с цитированием
  #6 (permalink)  
Старый 11.12.2011, 21:59
Аспирант
Отправить личное сообщение для Arigato Посмотреть профиль Найти все сообщения от Arigato
 
Регистрация: 11.12.2011
Сообщений: 42

devote, так там не выпадающий же список: select.size = 16;

nerv_, это общая статья, а тут конкретная проблема.
Ответить с цитированием
  #7 (permalink)  
Старый 11.12.2011, 22:39
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Arigato
devote, так там не выпадающий же список: select.size = 16;
А ну да сорри, подзабыл про это)
Ответить с цитированием
  #8 (permalink)  
Старый 12.12.2011, 09:28
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от Arigato
В IE почему-то не срабатывает навешивание события option.ondblclick.
В моём старом МСДНе у <option> вообще нет такого события... Но у <select> таки есть...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое добавление выпадающего списка В IE stepennwolf Internet Explorer 3 04.11.2011 17:36
как сделать событие для списка node. DimaRogov Events/DOM/Window 5 18.09.2011 16:52
Заполнить список значениями из динамически созданного выпадающего списка zhuzha Элементы интерфейса 0 17.08.2010 14:40
Использование load, динамически созданные объекты и добавление плагинов к ним. Alexander Majesty jQuery 2 11.12.2009 01:12
событие на выпадение-скрытие списка select Aderba jQuery 1 03.04.2009 21:51