Ich habe eine Feldgruppe im Repeater-Stil auf einer Seite mit benutzerdefinierten Optionen. Es gibt einen aktiven visuellen Editor in einem versteckten Zustand, und wenn der Benutzer auf "Neu hinzufügen" klickt, wird die gesamte Zeile geklont. Ich muss dann den visuellen Editor in der geklonten Zeile initialisieren. Mein Code:
$('.repeater-add-new').click(function(event) {
event.preventDefault();
var target = $(this).data('repeater');
$( '#' + target).find('.repeater-row:not(.clone) .repeater-content.in').collapse();
var newRow = $( '#' + target + ' .repeater-row.clone' ).clone().appendTo( '#' + target + ' .repeater-row-wrapper' ).removeClass('clone');
rebuildIndex(target);
// Initialize editors if needed
newRow.find('.wp-editor-wrap').each(function(index, el) {
var ed_id = $(this).find('textarea').attr('id');
tinymce.init(tinyMCEPreInit.mceInit[ed_id]);
tinymce.execCommand('mceAddEditor', false, ed_id);
quicktags({id : ed_id});
});
});
Screenshot der Benutzeroberfläche:
Wenn die Seite geladen wird, wird der Konsolenfehler angezeigt:
Nicht erfasster TypeError: Die Eigenschaft 'onpageload' von undefined kann nicht gelesen werden
Und natürlich funktioniert der Editor nicht. Nachdem ich die Seite gespeichert habe, funktioniert sie natürlich einwandfrei, aber sie muss funktionsfähig sein, wenn die Zeile ebenfalls hinzugefügt wird.
Antworten:
Haben Sie es geschafft, den Editor ohne Ihr Javascript zum Laufen zu bringen? Wenn ja, versuchen Sie, eine Vorlage zu erstellen, die einen funktionierenden Tinymce-Editor enthält, und schreiben Sie dann Ihr Javascript neu, um diese Vorlage mit dem
WithDataAndEvents
Argument derclone()
auf true gesetzten jQuery- Funktion zu kopieren .Beispielsweise:
quelle