jQuery Nach () Methode funktioniert nicht mit id-Attribute?
-
28-09-2019 - |
Frage
Der Code unten funktioniert gut. Aber wenn ich die Zeichenfolge html ändern in newPara (), um <textarea></textarea><button id="someId">Save</button>
oder <textarea></textarea><input type="button" value="Save"/>
seine nicht funktioniert. Was ist das Problem dabei?
Ich brauche das id-Attribut den neu angeschlossenen html zu entfernen.
Jede Vorschläge!
Danke!
<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>
Lösung
Meine einzige Vermutung wäre, dass Sie doppelte Anführungszeichen verwenden die Stringliteral zu schaffen, sondern auch innerhalb der Zeichenfolge verwendet, daher ist es früh beendet wird.
Wenn ja dieses:
"<textarea></textarea><button id="someId">Save</button>"
sollte:
'<textarea></textarea><button id="someId">Save</button>'
Beachten Sie, dass ich Apostrophe auf der Außenseite verwendet, so dass die Innen diejenigen nicht schließen Sie die Zeichenfolge.
Probieren Sie es aus: http://jsfiddle.net/QQrHr/
Das Beispiel verwendet Ihren genauen Code. Die einzige Änderung war ich singen Anführungszeichen um die Zeichenfolge zu verwenden.
Sie können auch die inneren Anführungszeichen entkommen, wenn man will:
"<textarea></textarea><button id=\"someId\">Save</button>"
Andere Tipps
Suchen Sie append statt nach? Oder auch http://api.jquery.com/insertAfter/ ?