Javascript 将字符串分成几段,并用js将每段用html包装

Javascript 将字符串分成几段,并用js将每段用html包装,javascript,jquery,Javascript,Jquery,我正在使用一个内容可编辑的div来尝试制作标签。当用户按return键时,我需要能够选择上一个文本而不是上一个标记,并将其转换为新标记。标记将被包装在中,因此示例如下: <em>tag1></em><em>tag2</em>tag3--- // about to press enter for tag3 这就是我目前的想法: $('#tags').keydown(function(e) { i

我正在使用一个内容可编辑的div来尝试制作标签。当用户按return键时,我需要能够选择上一个文本而不是上一个标记,并将其转换为新标记。标记将被包装在中,因此示例如下:

<em>tag1></em><em>tag2</em>tag3--- // about to press enter for tag3
这就是我目前的想法:

$('#tags').keydown(function(e) {                    
    if (e.keyCode == 13 || e.which == 13) { 
        paste('---'); // this adds a separator when the user presses enter
        var content = $(this).html();
        var newTag = // the text between the last </em> and ---
        newtag.wrapInEm(somehow);
        event.preventDefault();
        return false;
    } 
});

我很难理解你的问题,因为有一些拼写错误,而且你的html示例没有任何意义

然而: 使用[.wrap]jquery函数怎么样

$('#tags'.keydown(function(e) {
     if (e.keyCode == 13 || e.which == 13) { 
        $([selector for previous text]).text().wrap(<em></em>);
    }
});

也许您应该将当前标记与新标记创建分开

HTML

JS


…前面文本的jQuery选择器是?给我一些html或编辑您当前拥有的内容,我会给您一个选择器。你的问题是,我不知道怎么做。
<div id='tags'>
  <span id='tag-list'></span>
  <span id='tag-new' contenteditable></span>
</div>
(function($){
    var tags = ['tag1', 'tag2'];

    $('#tag-new').on("keydown", function(e) {                    
        e.preventDefault();
        if (e.keyCode == 13 || e.which == 13) { 
            // if (!saveToDB) return;
            tags.push($(this).text());
            _renderTags();
            return false;
        } 
    });

    $('#tag-list').on("click", "em", function(e){
        // if (!deleteFromDB) return;
        var idx = tags.indexOf($(this).html());
        tags.splice(idx,1);
        _renderTags();
    });

    function _renderTags(){
        $('#tag-list').html("<em>" + tags.join("</em><em>") + "</em>");
    }
    $(document).ready(function(){
        // loadTagsFromDB
        _renderTags();
    });
})(jQuery);