Когда я создаю новые элементы div с помощью метода append, что-то в моем цикле вызывает вставку добавочных итераций содержимого буфера обмена в элемент .editable
.
Нажмите здесь Нажмите кнопку «Создать новый div» 4 или 5 раз и вставьте в поля и увидите проблему.
Фрагмент стека:
$("button").click(function () {
$(".body").append("<div class=\"editable\" style=\"border:1px solid red\" contenteditable></div><br />")
myFunction();
})
$(".editable").on("paste", function() {
myFunction();
})
function myFunction() {
var editors = $(".editable");
for (var i = 0, l = editors.length; i < l; i++) {
editors[i].addEventListener("paste", function (e) {
e.preventDefault();
var text = e.clipboardData.getData("text/plain");
document.execCommand("insertHTML", false, text);
});
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<div style="color:blue"><span style="font-size:2em">HTML</span></div>
<button>
Create new div
</button>
<div class="body">
<div class="editable" style="border:1px solid red" contenteditable></div><br />
<div class="editable" style="border:1px solid red" contenteditable></div><br />
</div>