JQuery After () Método não funciona com o atributo de identificação?
-
28-09-2019 - |
Pergunta
O código abaixo está funcionando bem. Mas se eu mudar a string html em newpara () para <textarea></textarea><button id="someId">Save</button>
ou <textarea></textarea><input type="button" value="Save"/>
não está funcionando. Qual é o problema nisso?
Preciso desse atributo de identificação para remover o HTML recém -anexado.
Alguma sugestão!
Obrigado!
<html>
<head>
<style>
p { background:yellow; font-weight:bold; cursor:pointer; padding:5px; }
p.over { background: #ccc; }
span { color:red; }
</style>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
<div id="aDiv">
<p>Click me!</p>
</div>
<span></span>
<script>
$("body").delegate("p", "click", newPara);
$("body").undelegate("button", "click", newPara).find("#adiv").html("<p>Click me!</p>");
function newPara() {
var html = "<textarea></textarea><button>Save</button>";
$(this).after(html);
}
</script>
</body>
</html>
Solução
Meu único palpite seria que você está usando citações duplas para criar a string literal, mas também usá -las dentro da string, encerrando -a cedo.
Se sim, isso:
"<textarea></textarea><button id="someId">Save</button>"
deveria estar:
'<textarea></textarea><button id="someId">Save</button>'
Observe que usei citações únicas do lado de fora, para que as internas não fechem a corda.
Experimente: http://jsfiddle.net/qqrhr/
O exemplo usa seu código exato. A única mudança que fiz foi usar citações de Singe ao redor da corda.
Você também pode escapar das citações internas, se quisesse:
"<textarea></textarea><button id=\"someId\">Save</button>"
Outras dicas
Você está procurando apendamento em vez de depois? Ou até http://api.jquery.com/insertafter/ ?