jQuery Dopo () metodo non funziona con l'attributo id?
-
28-09-2019 - |
Domanda
Il codice di seguito funziona. Ma se cambio la stringa HTML in newPara () per <textarea></textarea><button id="someId">Save</button>
o <textarea></textarea><input type="button" value="Save"/>
non il suo lavoro. Qual è il problema in questo?
Ho bisogno che attributo id per rimuovere il codice html appena collegato.
Le eventuali suggerimenti!
Grazie!
<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>
Soluzione
La mia unica ipotesi è che si sta utilizzando le virgolette doppie per creare letterale stringa, ma anche il loro utilizzo all'interno della stringa, quindi terminare presto.
Se è così, in questo modo:
"<textarea></textarea><button id="someId">Save</button>"
dovrebbe essere:
'<textarea></textarea><button id="someId">Save</button>'
Si noti che ho usato le virgolette singole al di fuori, in modo che quelle interne non lo fanno vicino la stringa.
Provalo: http://jsfiddle.net/QQrHr/
L'esempio utilizza il codice esatto. L'unico cambiamento che ho fatto è stato quello di utilizzare le virgolette attorno alla stringa singe.
Si potrebbe anche sfuggire alle citazioni interne se si voleva:
"<textarea></textarea><button id=\"someId\">Save</button>"
Altri suggerimenti
Siete alla ricerca di accodamento anziché dopo? O anche http://api.jquery.com/insertAfter/ ?