JavaScript/jQuery : get selected text's container

标签 javascript jquery

如何获取用户所选文本的容器 ID(例如,p 或 div 的 ID)?

我想创建所选文本的列表,用户选择一个文本,然后单击按钮添加到列表中。 当用户单击列表中的文本时,我想突出显示原始选择的位置。 我需要容器的 ID,因为所选文本可能不唯一并且在文档中出现多次。

我得到这样的选定文本Return HTML from a user-selected text

最佳答案

这是一种实现跨浏览器的方法(未经测试)

var getSelectionContainer = function() { 

    if (document.selection){  // IE
        return document.selection.createRange().parentElement();
    }

    var select = window.getSelection();
    if (select.rangeCount > 0) {
       return select.getRangeAt(0).startContainer.parentNode;
    }
};

Demo

(选择 5 秒前的一些文本,然后在控制台中查看)

链接

MDN window.getSelection

MDN selection.getRangeAt

MDN range.startContainer

MDN selection.rangeCount

关于JavaScript/jQuery : get selected text's container,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17642799/

相关文章:

jquery - 滚动 - 单击无法在固定侧边栏内滚动自定义滚动条

javascript - 如何根据 json 属性在 Kendo jquery 下拉列表中设置默认值

javascript - Bootstrap 使用 fa-spinner 和 pulse 进行反馈

javascript - 自定义图例/图像作为传单 map 中的图例

javascript - JSON响应优化

jquery - 引导箱警报焦点未返回到输入

javascript - 如何在 discord.js 中断开用户与语音 channel 的连接?

javascript - 使用 php 发送 json 填充数据表

php - 我如何在laravel中的 "if"中使用 "whereIn"条件

java - 捕获 Ajax 表单提交中的服务器端错误