Eu tenho um grupo de campos no estilo "repetidor" em uma página de opções personalizadas. Há um editor visual ativo em um estado oculto e, quando o usuário clica em "adicionar novo", a linha inteira é clonada. Preciso inicializar o editor visual na linha clonada. Meu código:
$('.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});
});
});
Captura de tela da interface:
Quando a página carrega, recebo o erro do console:
TypeError não capturado: não é possível ler a propriedade 'onpageload' de undefined
E é claro que o editor não funciona. Depois de salvar a página, ela funciona bem, é claro, mas preciso que ela funcione quando a linha é adicionada também.
Respostas:
Você conseguiu que o editor funcionasse sem o seu javascript incluído? Nesse caso, tente criar um modelo que inclua um editor de timbre funcional e reescreva seu javascript para copiar esse modelo usando o
WithDataAndEvents
argumento daclone()
função jQuery definido como true.Por exemplo:
fonte