Estou desenvolvendo uma área de administrador para o site da empresa onde eu trabalho. Essa área contém uma tabela que é gerada dinamicamente em PHP, do qual, fiz uma função e sempre referencio ela. Nessa tabela, ao clicar duas vezes, abro uma página de formulário para alterar os dados selecionados e, quando ordeno ou pesquiso algo na tabela, faço as requisições SQL pelo PHP e atualizo a tabela utilizando o replaceWith. Até aí está funcionando, porém, depois de utilizar esse replaceWith, meu jQuery que uso para pegar a quantidade de cliques na tabela, para de funcionar, sendo que a tabela é sempre gerada pela mesma função, ou seja, a tabela tem sempre as mesmas classes e ids. Alguém sabe o que pode estar acontecendo?
Função para pegar o clique duplo:
$("#cod").dblclick(function(){
Função do replaceWith (“todos” é o id do tbody):
$("#todos").replaceWith(data);
Alguma mensagem na aba console do navegador usando F12?
Já tentou deixar todo o seu jquery no fim da página antes de fechar o body? ex
<script>
...
</script>
</body>
</html>
Sim. O PHP faz a primeira carga na página, mas quando quero ordenar a tabela, dou dois cliques em cima da coluna que desejo ordenar. Com o jQuery pego esse duplo clique, com o ajax envio para função PHP os dados e no PHP monto a SQL e utilizo o retorno do success: function(data)
para dar o replaceWith.
Meu script já está no final da página
E quando clica duas vezes alguma mensagem de erro?
Não, apenas não aciona a função
Não seria melhor usar html?
$("#todos").html(data);
Pelo que pesquisei enquanto html altera apenas o conteúdo e não a tag pai, no caso tbody, o replaceWith muda tudo…
Tentei usar o .html(), mas o problema ainda persiste
Tenho essa função que pega o código da linha em que o mouse está, e ela também não está funcionando ao atualizar a tabela:
$("tbody tr").mouseover(function(){
cod = $(this).find('.codigo').html();
});
Problema resolvido basta trocar o código:
$(document).ready(function() {
$("tbody tr").dblclick(function(){ });
});
Por esse:
$(document).on("dblclick", "tbody tr", function() {
});