我有一个contentEditable div,在这个div里面我有一张桌子。
示例HTML:
<div id="divId" contenteditable="true">
<table>
<tbody>
<tr>
<td><br></td>
<td>@param<br></td>
</tr>
<tr>
<td><br></td>
<td><br></td>
</tr>
</tbody>
</table>
</div>
我想在插入位置(表格中的选定单元格)上插入一个输入元素 - 例如@param所在的位置。
我使用了$(&#34; #divId&#34;)附加但是只将输入插入div的末尾而不是我需要它。
任何帮助将不胜感激。
答案 0 :(得分:3)
你试过这个功能吗?
function pasteHtmlAtCaret( html ) {
var sel, range;
if ( window.getSelection ) {
// IE9 and non-IE
sel = window.getSelection();
if ( sel.getRangeAt && sel.rangeCount ) {
range = sel.getRangeAt( 0 );
range.deleteContents();
// Range.createContextualFragment() would be useful here but is
// only relatively recently standardized and is not supported in
// some browsers (IE9, for one)
var el = document.createElement( "div" );
el.innerHTML = html;
var frag = document.createDocumentFragment(),
node, lastNode;
while ( ( node = el.firstChild ) ) {
lastNode = frag.appendChild( node );
}
range.insertNode( frag );
// Preserve the selection
if ( lastNode ) {
range = range.cloneRange();
range.setStartAfter( lastNode );
range.collapse( true );
sel.removeAllRanges();
sel.addRange( range );
}
}
} else if ( document.selection && document.selection.type != "Control" ) {
// IE < 9
document.selection.createRange().pasteHTML( html );
}
}