如何根据光标位置选择对象?

时间:2014-01-04 21:03:16

标签: javascript cursor range selection dom-traversal

我想根据光标位置将一个类附加到一个对象。

我理解range的基础知识,可以获取/操作选定的文本,但我不知道如何使用光标将类附加到它当前所在的对象。

我可能会在游标上添加一个临时元素,然后遍历父元素并在删除临时元素之前附加类。这真的很麻烦,我必须分配一些东西来初始化它(键盘快捷键或keydown)。

有什么想法吗?我一直在四处寻找,但没有发现任何我想要的东西。

1 个答案:

答案 0 :(得分:0)

感谢John的领导以及更合适的搜索词的结果,我发现了这一点:

Javascript: Detect Carets Parent Node

要回答这个问题,这就是它的完成方式。

function getCursorParentNode()
{

  var target = null;
  if(window.getSelection)
  {
    target = window.getSelection().getRangeAt(0).commonAncestorContainer;
    return((target.nodeType===1) ? target : target.parentNode);
  }
  else if(document.selection)
  {
    var target = document.selection.createRange().parentElement();
  }
  return target;

}

然后,根据您的喜好初始化它,例如:

$('.content').on('keydown',function(){

  var target = getCursorParentNode();
  target.className = 'red';

});

<强> Here's a fiddle to demonstrate.