Mam grupę pól w stylu „repeater” na niestandardowej stronie opcji. Aktywny edytor wizualny jest w stanie ukrytym, a kiedy użytkownik kliknie „dodaj nowy”, cały wiersz zostanie sklonowany. Następnie muszę zainicjować edytor wizualny w sklonowanym wierszu. Mój kod:
$('.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});
});
});
Zrzut ekranu interfejsu:
Podczas ładowania strony pojawia się błąd konsoli:
Uncaught TypeError: Nie można odczytać właściwości „onpageload” niezdefiniowanej
I oczywiście edytor nie działa. Po zapisaniu strony działa to oczywiście dobrze, ale potrzebuję, aby działała również po dodaniu wiersza.
Odpowiedzi:
Czy udało Ci się uruchomić edytor bez dołączonego javascript? Jeśli tak, spróbuj utworzyć szablon zawierający działający edytor tinymce, a następnie przepisz kod JavaScript, aby skopiować ten szablon, używając
WithDataAndEvents
argumentuclone()
funkcji jQuery ustawionej na true.Na przykład:
źródło