首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在JQuery中为所选文本添加<span>标签

如何在JQuery中为所选文本添加<span>标签
EN

Stack Overflow用户
提问于 2018-12-24 13:36:36
回答 4查看 1.5K关注 0票数 1

我有一个很大的段落,例如

代码语言:javascript
运行
复制
<p> hello this is my paragraph </p>

所以我想要在整个文本中的选定文本上附加一个标记,所以如果我在“我的段落”上突出显示,我希望段落如下所示

代码语言:javascript
运行
复制
<p> hello this is <span>my paragraph</span></p>

谢谢大家

EN

回答 4

Stack Overflow用户

发布于 2018-12-24 13:46:37

通过使用surroundContents(),你可以很容易地使用javascript来实现这一点。

代码语言:javascript
运行
复制
<div onclick="addSpanEle()">hello this is my paragraph</div>

function addSpanEle() {
    var span = document.createElement("span");

    if (window.getSelection) {
        var selectedText = window.getSelection();
        if (selectedText.rangeCount) {
            var range = selectedText.getRangeAt(0).cloneRange();
            range.surroundContents(span);
            selectedText.removeAllRanges();
            selectedText.addRange(range);
        }
    }
}

对于jquery:在这里检查小提琴演示:http://jsfiddle.net/BGKSN/24/

礼节:https://stackoverflow.com/a/17836828/10153495

票数 1
EN

Stack Overflow用户

发布于 2018-12-24 14:11:01

我正在搜索你的答案,并找到了:Add tags around selected text in an element

下面是我从提供的链接中复制的主要代码。

代码语言:javascript
运行
复制
<p> My sample paragraph </p>

<style>
    span {color: red;}
</style>
<script type="text/javascript">

    function getSelectedText() {
        t = (document.all) ? document.selection.createRange().text : document.getSelection();
        return t;
    }

    $('body').mouseup(function(){
        var selection = getSelectedText();
        var selection_text = selection.toString();

        // How do I add a span around the selected text?

        var span = document.createElement('SPAN');
        span.textContent = selection_text;

        var range = selection.getRangeAt(0);
        range.deleteContents();
        range.insertNode(span);
    });

</script>
票数 1
EN

Stack Overflow用户

发布于 2018-12-24 13:43:02

如下所示,找到desire容器,并使用span进行包装。

代码语言:javascript
运行
复制
$("p:contains('my paragraph')").html(function(_, html) {
  return html.replace(/(my paragraph)/g, '<span class="yourclass">$1</span>');
});
代码语言:javascript
运行
复制
.yourclass {
  background-color: red
}
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p> hello this is my paragraph </p>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53909535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档