【问题标题】:jquery - insert element over caret position [duplicate]jquery - 在插入符号位置插入元素[重复]
【发布时间】:2023-03-29 14:09:01
【问题描述】:

我有一个 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 所在的位置。

我使用了 $("#divId").append 但它只将输入插入到 div 的末尾,而不是我需要的地方。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    你试过这个功能吗?

    http://goo.gl/BdPd3k

    功能 pasteHtmlAtCaret( html ) { 变量 sel,范围; 如果(窗口.getSelection){ // IE9 和非 IE sel = window.getSelection(); if ( sel.getRangeAt && sel.rangeCount ) { 范围 = 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 ); } }

    【讨论】:

    • 效果很好!谢谢
    猜你喜欢
    • 1970-01-01
    • 2015-04-22
    • 2011-06-17
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多