gpt4 book ai didi

使用附加方法在剪贴板上进行 Javascript For 循环迭代

转载 作者:行者123 更新时间:2023-11-30 14:14:22 25 4
gpt4 key购买 nike

当我使用 append 方法创建新的 div 时,循环中的某些内容导致剪贴板内容的增量迭代被粘贴到 .editable div 中。

Fiddle here单击“创建新的 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>

最佳答案

这对你来说怎么样?

// When something has been pasted to an editable element. 
const onPaste = (e) => {
e.preventDefault();
const text = e.clipboardData.getData("text/plain");
document.execCommand("insertHTML", false, text);
};


// Add some new editable element to the DOM.
const buttonClickHandler = () => {
const template = "<div class=\"editable\" " +
" style=\"border:1px solid red\" contenteditable></div><br/>";
$(".body").append(template);
onAppend();
};


// Simply iterate over an array and add a past event listener.
const manager = a => a.forEach(i => i.addEventListener("paste", e => onPaste(e)));


// Fire this method when a new editable item has been added to the DOM.
const onAppend = () => {
const list = document.querySelectorAll(".editable");
manager([list[list.length - 1]]);
};


// On load.
$(document).ready(() => {
$("button").click(buttonClickHandler);
manager(document.querySelectorAll(".editable"));
});
div[contenteditable] {
height: 50px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.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>

关于使用附加方法在剪贴板上进行 Javascript For 循环迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53837279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com