Как добавитьEventListener для элементов, поступающих с сервера? - PullRequest
0 голосов
/ 11 сентября 2009

Как добавить событие click, используя addEventListener (window.onload) когда соответствующие теги генерируются из сервер (через запрос xmphttp, не менее)?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 12 сентября 2009

Вы можете попытаться обработать события для родительских элементов, которые доступны при загрузке DOM, а затем получить элемент, связанный с событием.

<ul id="list">
  <li id="first">The first</li>
  <li id="second">The second</li>
  <li id="third">The third</li>
</ul>

document.getElementById('list').onclick(function(e){
  o = e.originalTarget;
  // if you click on second li o will bi the same as document.getElementById('first')
  // even if li with id "first" is inserted to DOM after creating this event handler to "list"
  // so here you can perform actions with it
  // hope it will help
});
0 голосов
/ 14 сентября 2009

Спасибо всем.

Я решил эту проблему, добавив приведенный ниже код в событие «on success» запроса XMLHTTP, который заполнил DOM элементами, поступающими с сервера. Это сработало для меня. Джош, ты заставил мою голову двигаться в правильном направлении (хотя было бы неплохо увидеть иллюстрацию кода), поэтому я отметил твой ответ как ответ.

if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {

                        var m_sel=document.getElementById("fcat");

                        if (m_sel) {

                            var maxi = m_sel.options.length;

                            for( var i = 0; i < maxi; i++ )
                            {
                                var option = m_sel.options[i];
                                    option.addEventListener( "click", toggleElem, true );

                            }                                 

                        }        
}
0 голосов
/ 11 сентября 2009

Вы должны применить обработчики событий после элементы были вставлены в DOM

...