Inicializa o editor TinyMCE / editor visual após a inserção AJAX

11

Eu tenho um grupo de campos de 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", toda a linha é clonada. Eu preciso então 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 é carregada, recebo o erro do console:

  

Uncaught TypeError: Não é possível ler a propriedade 'onpageload' de undefined

E, claro, o editor não funciona. Depois de salvar a página, ela funciona bem, claro, mas eu preciso que ela funcione quando a linha for adicionada também.

    
por Jack Arturo 10.08.2015 / 16:17

1 resposta

1

Você conseguiu colocar o editor em funcionamento sem incluir seu javascript? Nesse caso, tente criar um modelo que inclua um editor de tinym de trabalho e, em seguida, reescreva seu javascript para copiar esse modelo usando o argumento WithDataAndEvents do jQuery Função clone() definida como verdadeira.

Por exemplo:

$('.cloner').click(function(){
  $('.container').append($('.template').clone(true).removeClass('hidden'));
});
    
por Fleuv 11.06.2018 / 14:37