У меня есть группа полей стиля «повторитель» на странице пользовательских настроек. Есть активный визуальный редактор в скрытом состоянии, и когда пользователь нажимает «добавить новый», вся строка клонируется. Затем мне нужно инициализировать визуальный редактор в клонированной строке. Мой код:
$('.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});
});
});
Скриншот интерфейса:
Когда страница загружается, я получаю ошибку консоли:
Uncaught TypeError: Невозможно прочитать свойство 'onpageload' из неопределенного
И, конечно, редактор не работает. После того, как я сохранил страницу, она, конечно, работает нормально, но мне нужно, чтобы она работала и при добавлении строки.
Ответы:
Удалось ли вам заставить редактор работать без включенного JavaScript? Если это так, попробуйте создать шаблон, включающий работающий редактор tinymce, а затем перепишите свой javascript, чтобы скопировать этот шаблон, используя
WithDataAndEvents
аргументclone()
функции jQuery, установленной в true.Например:
источник