Como faço para addEventListener para elementos provenientes do servidor?
-
06-07-2019 - |
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!
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 );
}
}
}