Pergunta

Como faço para adicionar um evento de clique usando addEventListener (window.onload) quando as marcas em questão estão sendo gerados a partir de o servidor (através de uma solicitação xmphttp, não menos)?

Obrigado!

Foi útil?

Solução

Você tem que aplicar as hanlders eventos após os elementos foram inseridos no DOM

Outras dicas

Você pode tentar a eventos identificador para elementos pai, que estão disponíveis como DOM carregado, em seguida, obter elemento relacionado com 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
});

Obrigado a todos.

Eu resolvi isso adicionando o código abaixo ao "no sucesso" caso do pedido XMLHTTP que povoaram o DOM com os elementos provenientes do servidor. Que funcionou para mim. Josh, você tem a minha cabeça se movendo na direção certa (embora teria sido bom ver uma ilustração de código) para que eu marcado a sua resposta como a resposta.

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top