gpt4 book ai didi

Javascript WYSIWYG removeEventListener 然后把它带回来

转载 作者:太空宇宙 更新时间:2023-11-04 12:01:00 26 4
gpt4 key购买 nike

我正在使用纯 JS 作为练习从头开始创建一个奇怪的所见即所得。到目前为止,这是我的代码:

<style> 
body {
height: 200px;
background: white;
}

.title1 {
height: 12px;
width: 100px;
background: white;
position: relative;

}
</style>
<script>
newTitle1 = function() {
var title1 = document.createElement("div")
title1.setAttribute("contentEditable", "true")
title1.innerHTML = "whatever";
title1.className = "title1";
title1.addEventListener("click", function() {
removeEventListener("click", newTitle1);
})

title1.style.left = (event.pageX -4) + "px";
title1.style.top = (event.pageY -4 ) + "px";
document.body.appendChild(title1)

}

addEventListener("click", newTitle1)
</script>

我的问题具体是关于

title1.addEventListener("click", function() {
removeEventListener("click", newTitle1);
})

我希望 removeEventListener 在我点击它刚刚创建的 div 时工作。但是,当我在 div 外部单击时,我希望 newTitle1 起作用。

底线:我希望 newTitle1 监听器在它刚刚创建的 div 之外工作,而不是在它创建的 div 内部工作。任何想法如何实现这一目标?这是我的代码的 fiddle ,用于测试是否需要:https://jsfiddle.net/nirchernia/v3cLwb82/

最佳答案

您想停止传播事件。无耻地从over here偷来的解决方案.

newTitle1 = function() {
var title1 = document.createElement("div")
title1.setAttribute("contentEditable", "true")
title1.innerHTML = "whatever";
title1.className = "title1";
title1.addEventListener("click", function(event) {
event.stopPropagation()
window.event.cancelBubble = true
})

title1.style.left = (event.pageX -4) + "px";
title1.style.top = (event.pageY -4 ) + "px";
document.body.appendChild(title1)

addEventListener("点击", newTitle1)

/edit:我想你希望你的 .title1 CSS 也有 position:absolute; :)

关于Javascript WYSIWYG removeEventListener 然后把它带回来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29812408/

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