即使我们通过单击按钮添加新的 ckeditor,我如何设置相同 class 的多个 ckeditor?

How can I set multiple ckeditors of same class even if we add new ckeditor by appending on click a button?

我打算在一个页面上使用多个 ckeditor。我需要在单击按钮时附加 ckeditor,但它不适用于附加的 ckeditor。 我试图插入相同的 class 并调用所有 ckeditors,如 "querySelectorAll('.editor')"

它在每个“.editor”class 上都能正常工作。但我的问题是单击按钮后附加的 ckeditor。

我发现“.editor”class 已通过检查源代码添加。我认为它会起作用,现在我需要帮助。

    <div class="editors">
        <div class="editor">
          <p>Editor 1 here</p>
        </div>
        <div class="editor">
          <p>Editor 2 here</p>
        </div>
        </div>

        <button class="add-editor">Add New Editor</button>


        <script>
        $('.add-editor').click(function(){
         $('.editors').append(' <div class="editor"><p>Editor 3 here (Editor Not Loading here)</p></div>')
         });

 var allEditors = document.querySelectorAll('.editor');
  for (var i = 0; i < allEditors.length; ++i) {
    InlineEditor.create(allEditors[i]);
  }

        </script>

您需要在创建动态内容后调用 CKEDITOR.replace('editor'); 以在其上设置 CKEDITOR。

如果这不是您所希望的,请告诉我。

N.B. Not sure why it's throwing an error, despite working. If anyone knows please let me know and I'll update the answer.


演示

// Create click event for add button
$("#add-input").click(function() {

  // Add new input to #input-list
  $("#input-list").append('<input name="editor">');

  // Replace newly added editor with CKEDITOR
  CKEDITOR.replace('editor');

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script src="https://cdn.ckeditor.com/4.11.1/standard/ckeditor.js"></script>


<button id="add-input">Add editor</button>

<div id="input-list"></div>

这里的技巧是您只想为新编辑器启用 CKEditor。如果你对现有的这样做,你会得到错误。你可以通过给它们添加一个 .enabled class 来解决这个问题,这样,当你添加一个新的时,你不会影响旧的。

// Once on page load, for existing editors
$(document).ready(enableEditors);
// When you click on the button
$('.add-editor').click(function() {
  var count = $('.editor').length + 1;
  $('.editors').append('<div class="editor"><p>Editor ' + count  + ' here</p></div>');
  enableEditors();
});

function enableEditors() {
  $('.editor:not(.enabled)').ckeditor().addClass('.enabled');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.ckeditor.com/4.11.1/standard/ckeditor.js"></script>
<script src="https://cdn.ckeditor.com/4.11.1/standard/adapters/jquery.js"></script>

<div class="editors">
  <div class="editor">
    <p>Editor 1 here</p>
  </div>
  <div class="editor">
    <p>Editor 2 here</p>
  </div>
</div>

<button class="add-editor">Add New Editor</button>