javascript - 获取可编辑div中的光标父级

标签 javascript jquery html

我有一个内容可编辑的 div,如下所示:

<div class="note" contenteditable="true">
   ABCD
   <div class="first">EFGH</div>
   <div class="second">IJKL</div>
   MNOP
</div>

因此这使得整个代码可编辑。我需要找出的是,在每次按键时,哪个元素包含光标。因此,如果光标位于 E 之后,它应该会生成类 first 的 div。

我尝试在子 div 上使用 focus() 事件,但当父 div 为 contenteditable 时,该事件不会被触发。

最佳答案

这应该为您提供插入符号(闪烁文本光标)当前所在的元素:

let caretElement = document.getSelection().anchorNode.parentNode;

下面是一个在您移动时突出显示该元素的示例:

setInterval(()=>{
  let marked = document.querySelector(".marked");
  if (marked) {
      marked.classList.remove("marked");
  }
  
  let currentElement = document.getSelection().anchorNode;
  if (currentElement) {
    currentElement.parentNode.classList.add("marked");
  }
},200);
.marked {
  background-color:#f00;
}
<div class="note" contenteditable="true">
   ABCD
   <div class="first">EFGH</div>
   <div class="second">IJKL</div>
   MNOP
</div>

关于javascript - 获取可编辑div中的光标父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54733706/

相关文章:

javascript - 多个元素上的连续背景图像图案

javascript - 在Asp.net Mvc中隐藏字段值无法访问

jquery - 阻止 jQuery Cycle 调整容器的高度和宽度

javascript - 检测滚动 - 滚动到 div

html - 尽管 block 中有空格,为什么在连续 block 之间发生换行?

php - 带有水印提示和提交值的输入文本框

javascript - d3.js 如何将参数传递给php以获取查询条件

javascript - 为 Weebly 自动生成的侧边菜单,可能使用 JavaScript 或 jQuery

javascript - Underscore JS 在模板中添加逻辑

html - 如果第一个 Flash 影片需要较新的 Flash 播放器版本,如何回退到其他 Flash 影片