(在Debian / Linux上使用最近的Firefox v45,如果重要的话)
我的网络文档中包含以下元素:
<div id="mom_minieditcontentdiv_id" contenteditable="true">
<span id="mom$miniedit__3TnS01Ncdw7tV1" class="mom_minieditvalue_cl">°</span>
</div>
(实际上,该<div id="mom_minieditcontentdiv_id"
元素的DOM子元素正在动态变化)
我输入了键 a ,焦点位于上方的°
符号之后。浏览器(正如我所料)将DOM更新为:
<div id="mom_minieditcontentdiv_id" contenteditable="true">
<span id="mom$miniedit__3TnS01Ncdw7tV1" class="mom_minieditvalue_cl">°a</span>
</div>
在javascript中,我使用Jquery2,全球var $contentdiv;
在$(document).ready
时间初始化:
$contentdiv = $('#mom_minieditcontentdiv_id');
我后来设置了事件处理程序:
$contentdiv.on('input', function(ev) {
console.log("miniedit $contentdiv=", $contentdiv, " input ev=", ev,
" $(this)=", $(this));
});
$($contentdiv).keypress(function(ev) {
console.log("miniedit $contentdiv=", $contentdiv, " keypress ev=", ev,
" $(this)=", $(this));
});
如何让这些事件处理程序处理<span>
经过调整和编辑的id="mom$miniedit__3TnS01Ncdw7tV1"
,即实际处理input
或keypress
事件的范围?我是否需要明确处理焦点事件?
(FWIW,实际和完整代码是MELT monitor(GPLv3 +许可下的免费软件),提交be9a045349674d01bb9...)
那么,如何为我的可疑<span>
处理的某个键盘(input
或keypress
)事件获取包含div
的最近(最内部,也就是最深) (即$contentdiv
)?
我的动机是尝试编写一些结构化编辑器。因此,对于每个键盘事件,我需要获得由该事件处理的最里面的<span
,即具有&#34;焦点&#34;。