如何获得聚焦元素(<em>)?</em>

时间:2014-09-15 14:22:52

标签: javascript jquery html dom

我有这样的结构:

<div contenteditable="true">
   <em class="class1">__<em>
   <em class="class2">:<em>
   <em class="class1">__<em>
   <em class="class2">:<em>
   <em class="class1">__<em>
</div>

我如何获得专注于<em>的DOM或JQuery对象?
document.activeElement返回将军<div>
window.getSelection().focusNode返回重点<em>

的文字

2 个答案:

答案 0 :(得分:1)

em标签实际上只应用于设置元素文本的样式,这可以使用CSS更有效地完成。话虽这么说,你可以使用类似的东西追捕聚焦元素:

window.getSelection().focusNode.parentElement; 

这将返回您要查找的实际em元素。你可以使用jQuery选择器更好地掌握它:

$(window.getSelection().focusNode.parentElement);

这是Fiddle

答案 1 :(得分:1)

查找一个查询以匹配您所知道的所有元素,以了解它们是否有焦点,例如

$("[contenteditable=true] em")

然后,继续关注事件

var lastFocused;
$("[contenteditable=true] em").focus(function(e) {
  lastFocused = e.target;
});

你将在lastFocused var上拥有焦点元素,确保在可能的情况下限制你想要的选择元素类型