Não executa alert ao clicar no href

3 respostas
jqueryhtml5javascript
S

Tenho um href, que ao ser clicado quero que execute um alert, mas não estou conseguindo, estou seguindo vários exemplos na internet, mas não consigo visualizar o erro. Quando clico nesse link, a página volta para o topo.
Obs. atualizei a página no modo debug, não mostra nenhum erro no console.

<script>

$(document).ready(function() {
	$.ajax({
		type:'post',		
		dataType: 'json',	
		url: 'listAllForum',
		success: function(dados){
			for(var i = 0; dados.length > i; i++){
				$('#post-forum').append('<div>' + dados[i].idForum + ' - ' + dados[i].message + '</div>' +
						'<div> <a href="#" id="resp">Responder</a>');
			}
		}
	});
	
	$('#resp').on('click', function (event) {
		alert('teste');
	    event.preventDefault();
	});
});

3 Respostas

L

Só faltou postar o código da tag <a em questão

leandronsp

Fazer o bind do click no elemento não funciona neste caso pois no momento que você declara assim:

$('#resp').on('click', function (event) {
    // ...
}

…o elemento ainda não está no DOM pois a chamada Ajax é assíncrona. Para o jQuery você declarou evento click num elemento que não existe, por isso ele não faz nada nem dá erros, pois nesta altura o length do $('#resp') é 0 (zero).

É preciso fazer o bind no $(document) passando o selector e a função callback. Assim a cada novo elemento criado no document já terá o bind desejado:

$(document).on('click', '#resp', function (event) { 
    // ...
}
S

obrigado, leandronsp, valeu pela ajuda.

Criado 16 de abril de 2017
Ultima resposta 16 de abr. de 2017
Respostas 3
Participantes 3