2016-03-18 18 views
-1
$('li').click(function() { 
    $(this).replaceWith('<form><input[type="text"]>cool stuff</input></form>'); 
}); 

Wenn ich diesen Code verwende, erscheint der Text in der Mitte, aber nicht das Textfeld, das ich suche. Wie behebe ich das?Warum ändert sich diese Umwandlung nicht?

Antwort

2

Es ist, weil die HTML Sie die li sind ersetzt mit ist ungültig:

$('li').click(function() { 
    $(this).replaceWith('<form><input type="text">cool stuff</form>'); 
}); 

Working example

Beachten Sie auch, dass bei einem form ein li ersetzt ungültig ist, als nur li Elemente direkter Kinder sein können a ol oder ul. Stattdessen könnten Sie die aktuellen li, dann append() die neuen form es empty(), oder einfach nur html(), dies zu tun:

$('li').click(function() { 
    $(this).html('<form><input type="text">cool stuff</form>'); 
}); 
+0

gut das funktioniert, aber jetzt kann ich nicht in das Feld eingeben. Irgendein Grund warum? – WillingLearner

+0

Ich bin nicht sicher, die Geige erlaubt mir, gut zu tippen. Haben Sie noch andere Event-Handler, die an die "Eingabe", "Form" oder "ul" angehängt sind? –

+0

nein ich habe nichts anderes – WillingLearner