Mit innerhalb einer jQuery replaceWith () Funktion
-
26-09-2019
- |
-
-
26-09-2019 - |
Frage
Ich arbeite an einem PHP-Dokument, das in dem jQuery-Code hat. Ich verwende einen replaceWith () -Funktionen äußeren divs abzustreifen und mit Spanne ersetzen. es scheint, dass ich nur mit <span>
ersetzen kann und nicht <span class="something">
Warum?
Bearbeiten : Hier ist ein Beispiel für den Code ein:
Danke Dave, aber ich benutze eigentlich die zweite Option im Code oben, hier ist das, was ich zu tun versuchen:
$response[] = "jQuery('#myID').replaceWith('<span>'+jQuery('#myID').html()+'</span>');";
Der obige Code funktioniert. Grundsätzlich hat ich ein <a>
Element I mit einem <span>
Elemente ersetzt werden soll und die Klasse auf einer Ajax-Antwort ändern.
Nun, wenn ich hinzufügen Klassen zu einem der Spannweiten über :, wie folgt aus:
$response[] = "jQuery('#myID').replaceWith('<span class"something">'+jQuery('#myID').html()+'</span>');";
der Code bricht, ist es wegen der äußeren doppelten Anführungszeichen auf der jQuery-Anweisung?
Bearbeiten
So stellte ich heraus, ein Problem mit meinem <a>
Elemente zu sein, ich habe versucht, zusätzlich zu ersetzen, zu entkommen, die doppelten Anführungszeichen um die Klasse :). Vielen Dank für die extrem schnelle Hilfe. Ich melde mich Kredit zu geben, wem Ehre gebührt:)
$response[] = "jQuery('#myID').replaceWith('<span class=\"something\">'+jQuery('#myID').html()+'</span>');";
Lösung
Da die größte Veränderung ist die Zugabe von Zitaten, überprüfen, dass das Klassenattribut nicht in einem ungekündigten String wird offen gelassen:
// Broken:
$("div").replaceWith("<span class="something">");
// Fixed:
$('div').replaceWith('<span class="something">');
Andere Tipps
Aus Gründen der Lesbarkeit und vermeiden zu verwirrend, sich wie diese, sollten Sie mit der folgenden Syntax für jQuery DOM Insertion statt:
var myDiv = jQuery('#myID');
$('<span></span>').html(myDiv.html()).addClass('something').replaceAll(myDiv);
Oh, und wenn man genau auf die Art und Weise sehen Sie den Code in der Frage oben hervorgehoben ist, können Sie schon sehen, was Sie tun, ist falsch;)