Pregunta

¿Cómo agrego un evento de clic usando addEventListener (window.onload) cuando las etiquetas en cuestión se están generando desde ¿El servidor (a través de una solicitud xmphttp, no menos)?

¡Gracias!

¿Fue útil?

Solución

Debe aplicar los controladores de eventos después de los elementos se han insertado en el DOM

Otros consejos

Puede tratar de manejar eventos para elementos principales, que están disponibles como DOM cargado, y luego obtener elementos relacionados con el evento.

<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
});

Gracias a todos.

Resolví esto agregando el siguiente código al " en caso de éxito " evento de la solicitud XMLHTTP que completó el DOM con los elementos provenientes del servidor. Eso funcionó para mí. Josh, tienes mi cabeza moviéndose en la dirección correcta (aunque hubiera sido bueno ver una ilustración de código), así que marqué tu respuesta como respuesta.

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 );

                            }                                 

                        }        
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top