javascript - 在 contenteditable 中查找光标目标元素 id

标签 javascript jquery html css cursor

在 contenteditable div 中,我有不同的子元素 id。 光标在 contenteditable 标记内移动时。我需要获取光标位置元素 id。

像这样:示例

  1. 如果 cursor 位于 one 字符串上,则输出是光标位置元素的 id,例如 1
  2. 如果是two输出2

我尝试这样做,但没有找到光标目标子ID。它仅在父级上。

function check(e){
  console.log($(e.target).attr('id'))
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div contentEditable="true"   id="res" tabindex="2"  onkeydown="check(event)">solve:
<span id="1">one</span>
  <p id="2">two</p>
  <i id="3">three</i>
</div>

最佳答案

你可以这样做:

$('#res').on('keyup', function() {
  var el = window.getSelection().getRangeAt(0).commonAncestorContainer.parentNode;
  console.log(el.id);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div contentEditable="true" id="res" tabindex="2">solve:
  <span id="1" class='number'>one</span>
  <p id="2" class='number'>two</p>
  <i id="3" class='number'>three</i>
</div>

您可以在 link 阅读有关 window.getSelection() 的信息。 .

您可以在 link 阅读有关与 getRangeAt() 结合使用的 window.getSelection() 的信息。 .

关于javascript - 在 contenteditable 中查找光标目标元素 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41102897/

相关文章:

javascript - bootstrap 4 中的 popper.js 给出 SyntaxError Unexpected token export

javascript - 修改处理div的宽度

javascript - jQuery 淡入/淡出不起作用?

javascript - 通过 javascript 在 Blazor 中更改输入值不会更改它的绑定(bind)属性值

ajax - 多个异步 jQuery AJAX POST 同时返回

html - 如何在JSP中的URL中添加两个变量?

jquery - jquery点击事件和按钮元素的问题

javascript - jQuery 回调到非 jQuery 父对象

html - 即使有 float ,输入也不会左对齐

javascript - jquery延迟不算作动画