【问题标题】:wrap first line of contenteditable in div在 div 中包装 contenteditable 的第一行
【发布时间】:2014-07-19 13:55:51
【问题描述】:

我有一个属性为 contentEditable 的 div。

我遇到的问题是我输入的第一行没有被标签包裹,但后面的行会。

输入

abcd
efgh
ijkl

结果

<div contentEditable="true">
    "abcd"
    <div>efgh</div>
    <div>ijkl</div>
</div>

【问题讨论】:

标签: jquery html contenteditable


【解决方案1】:

试试这个:获取 textchildren 然后将可编辑的 div 设为空并用 div 换行(我添加了 color:red 只是为了知道添加了 div)和孩子。

$(function(){
    $('div[contentEditable="true"]').each(function(){
       var text = $(this).clone().children().remove().end().text();// get text
       var $children = $(this).children();// get children

       //add text and children again
       $(this).empty().append('<div style="color:red;">'+text+'</div>').append($children);
    });
});

Demo

【讨论】:

    【解决方案2】:

    我不知道你在问什么。但你需要结果

     $("div[contentEditable=true]").text("abcd");
        $("div[contentEditable]").append("<div>efgh</div><div>ijkl</div>");
    

    DEMO

    【讨论】:

    • 我很确定这不是 OP 想要的。你读过标题吗?这是他当前在contenteditable&lt;div&gt; 中键入给定输入时得到的结果。换行符自动将文本包装在&lt;div&gt; 中,不需要脚本,OP 已经得到它没有它。
    • @TilwinJoy k 。你能告诉我他需要什么吗?
    • 他需要将第一行的文本换成&lt;div&gt;,只是换行后的那些...
    • 看起来不同的浏览器表现不同,lists.whatwg.org/pipermail/help-whatwg.org/2009-December/… 他可能不会在所有浏览器中得到相同的结果,他可能在 chrome 中测试了它..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多