Después de jQuery () método no funciona con atributo id?
-
28-09-2019 - |
Pregunta
El código de abajo está trabajando. Pero si cambio la cadena HTML en newPara () para <textarea></textarea><button id="someId">Save</button>
o <textarea></textarea><input type="button" value="Save"/>
no su trabajo. ¿Cuál es el problema en este?
necesito ese atributo id para eliminar el html recién conectados.
Cualquier sugerencias!
Gracias!
<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>
Solución
Mi única conjetura sería que usted está utilizando comillas dobles para crear la cadena literal, sino también su uso dentro de la cadena, por lo tanto, que termina antes de tiempo.
Si es así, esto:
"<textarea></textarea><button id="someId">Save</button>"
debería ser:
'<textarea></textarea><button id="someId">Save</button>'
Tenga en cuenta que he usado comillas simples en el exterior, de manera que los interiores no se cierran la cadena.
Pruébelo: http://jsfiddle.net/QQrHr/
El ejemplo utiliza el código exacto. El único cambio que hice fue usar comillas alrededor de la cadena chamusquina.
También podría escapar de las cotizaciones internas si quería:
"<textarea></textarea><button id=\"someId\">Save</button>"
Otros consejos
¿Está buscando datos anexados en lugar de después? O incluso http://api.jquery.com/insertAfter/ ?