Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.07.2009, 12:25
Pula
 
Сообщений: n/a

Кроссбраузерное навешивание событий на динамический элемент
Здравствуйте, уважаемые!
Прочитал http://javascript.ru/tutorial/events/crossbrowser, но и с ним не получилось достичь чего хочу.
Задача: вывести alert при нажатии на динамически созданный объект или, точнее, его составляющу.
Проблема: работает только на IE (8)... В опере (9.6) и FireFox-е (2.0.0.6) не хочет. Причём ошибок не выдают, просто не прикручивают событие...
var dv = document.createElement('DIV');
// ...
document.body.appendChild(dv);
var dv_id = "nado" + i;

Event.add(document.getElementById(dv_id), 'click', function () {alert(i);});


Пробовал и другие "кроссбраузерные" функции для записи события, например такую
function addEvent(el, evnt, func){ 
   if (el.addEventListener) {                   
        el.addEventListener(evnt.substr(2).toLowerCase(), func, false);
   } else if (el.attachEvent) {
      el.attachEvent(evnt.toLowerCase(), func);
   } else {
      el[evnt] = func;
   }
}


Но эффект тот же, может у меня где ошибка? Или обработка событий для динамических объектов выглядит как-то особо?
Надеюсь на вашу помощь. Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 02.07.2009, 12:49
Pula
 
Сообщений: n/a

Новые данные
Простите, я теперь разобрался что был не прав (но проблему не решил). Оказывается дело совсем не в этом, событие скорее всего "приклеевается". Проблема в другом. Дело в том, что я не могу тыкнуть на этот объект ни в опере ни в файрфоксе.
Структура внутренностей приаттаченного div-а примерно такая (отображу всё в куче):
<div>
<div id="nado0" style="float:right;"></div>
<div>tralala</div>
</div>
<div></div>

В результате экспериментов, я обранужил, что в ie я свободно могу тыкнуть на див nado0, а в opere и firefox-e не получается...
Ответить с цитированием
  #3 (permalink)  
Старый 02.07.2009, 13:56
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,022

Думаю, проблема в стилях. Попробуйте установить position:relative; для nado0. Если не поможет - добавьте z-index или background.
Ответить с цитированием
  #4 (permalink)  
Старый 02.07.2009, 14:58
Pula
 
Сообщений: n/a

проблема была в том, что в некоторых браузерах div с "надо0" оказывался под дивом с tralala и все тыки определяли именно этот ненужный для меня див. Проблему решил, задав style="margin-left...";
Так что вообще пустая тема получилась, можно удалять
Ответить с цитированием
  #5 (permalink)  
Старый 02.07.2009, 14:59
Pula
 
Сообщений: n/a

ой, неверно написал
ой, т.е. margin-right
Ответить с цитированием
  #6 (permalink)  
Старый 02.07.2009, 15:02
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,022

Это я и имел ввиду.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
кроссбраузерное добавление обработчика событий элементу krinart Events/DOM/Window 5 30.09.2008 04:38