méthode jQuery Après () ne fonctionne pas avec l'attribut id?
-
28-09-2019 - |
Question
Le code ci-dessous fonctionne très bien. Mais si je change la chaîne HTML dans newPara () pour <textarea></textarea><button id="someId">Save</button>
ou <textarea></textarea><input type="button" value="Save"/>
son ne fonctionne pas. Quel est le problème dans ce domaine?
Je dois cet attribut id pour supprimer le code html nouvellement joint.
Toutes les suggestions!
Merci!
<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>
La solution
Ma seule supposition serait que vous utilisez des guillemets doubles pour créer le littéral de chaîne, mais aussi de les utiliser à l'intérieur de la chaîne, se terminant donc tôt.
Si oui, ceci:
"<textarea></textarea><button id="someId">Save</button>"
devrait être:
'<textarea></textarea><button id="someId">Save</button>'
Notez que j'ai utilisé des guillemets simples à l'extérieur, de sorte que ceux de l'intérieur ne ferment pas la chaîne.
Essayez-: http://jsfiddle.net/QQrHr/
L'exemple utilise votre code exact. Le seul changement que j'ai fait était d'utiliser les guillemets autour de la chaîne singe.
Vous pouvez également échapper aux citations internes si vous voulez:
"<textarea></textarea><button id=\"someId\">Save</button>"
Autres conseils
Vous cherchez append au lieu de après? Ou même http://api.jquery.com/insertAfter/ ?