代码之家  ›  专栏  ›  技术社区  ›  snorkpete

单击时如何设置div中文本行的格式?

  •  1
  • snorkpete  · 技术社区  · 17 年前

    使用jQuery或straight javascript,如何在contentEditable打开的情况下从div中识别/选择/选择一行文本,并仅向该行文本添加格式?

    我目前有一个contentEditable设置为true的div,它允许用户编辑div的内容,根据自己的喜好添加/删除文本。但是,我希望用户也能够双击div中的任何文本行,并用不同的格式样式标记该行。 (即,将整行文本括在跨距内,然后设置跨距样式。请注意,我可以轻松设置跨距样式。我的问题在于识别用户单击的文本行,并将其括在跨距标记中)

    注意,由于用户可以添加大量内容,div本身是可滚动的,因此任何解决方案都应该能够处理滚动。

    2 回复  |  直到 17 年前
        1
  •  1
  •   Jon Dowdle    17 年前

    jQuery fieldSelection plugin 将允许您获取用户选择的文本。

    对于用跨距环绕选定的线,通常 jQuery $().wrap() 方法应该起作用。

        2
  •  0
  •   sth    16 年前

    对于Firefox,您可以使用:

    // This will give the first selection:
    var range = window.getSelection().getRangeAt(0);
    var txt = range.toString();
    var spn = document.createNode('span');
    spn.innerHTML = txt;
    // Here you can apply style to spn
    range.surrondContents(spn); // It will surround your selected text
    

    以下是获得更多帮助的链接: https://developer.mozilla.org/en/DOM/range.surroundContents

    对于IE,您可以使用: 你也可以在IE中使用同样的过程。。使用范围和选择。。

    希望它能解决你的问题。