javascript - 如何知道选择中是否有链接元素

标签 javascript dom selection range textrange

在 Javascript 中,我想确定一个元素(比如 A 元素)是否存在于给定范围/文本范围内。目的是确定用户的当前选择是否包含链接。我正在构建富文本编辑器控件。

范围对象有一个 commonAncestorContainer (W3C) 或 parentElement() (Microsoft) 方法,它返回范围内所有元素最接近的公共(public)祖先。但是,在该元素内部查找 A 元素是行不通的,因为这个共同祖先可能还包含不在该范围内的元素,因为该范围可以通过父元素开始或结束。

您将如何实现这一目标?

最佳答案

selection.containsNode 怎么样? https://developer.mozilla.org/en/DOM/Selection/containsNode

类似于:

var selection = window.getSelection();
var range = selection.getRangeAt(0);
var result = $('a', range.commonAncestorContainer).filter(function() {
  return selection.containsNode(this);
});
console.log(result);

关于javascript - 如何知道选择中是否有链接元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6052870/

相关文章:

Javascript 路由正则表达式

jQuery 单击没有执行任何操作?

c++ - 如何禁用QTableView的整列选择?

SAS : keep if exists

javascript - 检查返回 true 失败

javascript - 从javascript中的对象数组填充数组

javascript - 何时使用 `#` 符号来获取 DOM 元素?

android - 按选择参数顺序查询数据库

javascript - 单击 Ember 中的按钮添加 Handlebars 代码

xml - 检查XML DOM XMLDOC时出错