有一个小故障:第一个“酷”总是得到光标,因为你是通过“id”得到的。为了避免这个问题,我<p>cool</p>
在添加元素之前创建了一个元素,然后使用它来定位新的光标位置。
$(document).on('keypress', 'div[contenteditable="true"]', function(event) {
if (event.which == 13) { // enter key
event.preventDefault();
//insert the paragraph after this element.
var innerDiv = $("<p>cool</p>")
var sel = window.getSelection()
$(sel.anchorNode.parentNode).after(innerDiv);
//set cursor at new position
sel.collapse(innerDiv[0].firstChild, innerDiv.text().length);
}
});
JSFiddle
还有一个没有 jQ 的版本:
document.querySelector('div[contenteditable="true"]').addEventListener('keypress', function(event) {
if (event.which == 13) { // enter key
event.preventDefault();
//insert the paragraph after this element.
var innerDiv = document.createElement('p')
innerDiv.innerHTML = 'cool'
var sel = window.getSelection()
var selElem = sel.anchorNode.parentNode
selElem.parentNode.insertBefore(innerDiv, selElem.nextSibling)
//set cursor at new position
sel.collapse(innerDiv.firstChild, innerDiv.textContent.length);
}
});
JSFiddle no-jQ