假设我们有一个类似下面的HTML。
<div class="my_content" contenteditable="true">
<div class="my_paragraph"><span style="color:red;">RED</span><span style="color:green;">GREEN</span></div>
<div class="my_paragraph"><span style="font-size:1em">1EM-TEXT</span><div>
<div class="my_paragraph"><span style="font-size:2em">2EM-TEXT</span><div>
</div>
我有一个像下面这样的Backbone查看器。
events: {
"keydown .my_paragraph" :"onKeyDown"
},
onKeyDown : function(e) {
if(e.keyCode === 46) { //delete key
}
}
Q值。在onKeyDown方法的'if'中,如何获取用户尝试删除的确切段落(按删除键)?
答案 0 :(得分:1)
onKeyDown : function(e) {
if(e.keyCode === 46) { //delete key
}
}
您希望在您的示例中传递一个事件,即参数e
您可以使用e.target
object
更新:
正如derek所说,除非你将内容编辑为真,否则div不能听按键事件。
要使其正常工作,请删除父div的满足,并在每个子项中设置此属性
$(function(){
$('.my_paragraph').on('keydown', function(e){
console.log(e.target);
});
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="my_content">
<div class="my_paragraph first" contenteditable="true"><span style="color:red;">RED</span>"><span style="color:green;">GREEN</span></div>
<div class="my_paragraph second" contenteditable="true"><span style="font-size:1em">1EM-TEXT</span></div>
<div class="my_paragraph third" contenteditable="true"><span style="font-size:2em">2EM-TEXT</span></div>
</div>
&#13;
答案 1 :(得分:1)
您可以采取以下措施:
var cursorTarget = getSelection().getRangeAt(0).commonAncestorContainer.parentNode;
var targetParagraph = $('.my_paragraph').has(cursorTarget);
targetParagraph.addClass('target-paragraph'); // Or whatever you want
Codepen Example(例如,使用空格键)
同样重要:您的HTML无效。您没有在最后两个</div>
div中正确使用结束.my_paragraph
标记,并且在关闭第一个">
后还有一个span
。