取消选择特定代码

时间:2016-05-10 07:19:04

标签: javascript selection

有没有办法取消选择特定标签中的文字。例如。

<p id ="first">first text</p>
<p id ="second">Second text</p>

如果从两个标签中选择文本,但我想取消选择带有第一个id的标签。我知道您可以使用

取消选择所有选定的文本
window.getSelection().removeAllRanges();

但有没有办法取消选择具有特定ID的文字?

1 个答案:

答案 0 :(得分:3)

您可以使用CSS执行此操作,您可以指定以下CSS属性以允许选择特定元素。 根据您的要求,您可以通过两种方式实现这一目标。

1)CSS   - 在这种方法中,如果你提供任何带有后续CSS的元素,那么它就不会被包含在选择中,当你使用下面的代码进行选择时,它将不会返回#first元素的文本

HTML代码:

var result = childrenNode.SelectNodes("*[starts-with(local-name(), 'EmailType')]")
                       .Cast<XmlNode>()
                       .Select(o => new 
                       {
                         email = o.PreviousSibling.InnerText,
                         emailType = o.InnerText
                       })
                       .ToList();

CSS代码:

var selObj = window.getSelection(); 
var selRange = selObj.getRangeAt(0);
selObj.toString();

2)Javascript   - 这是概念方法,您需要使用正确的语法进行尝试,您可以编写一个使用选择对象并遍历HTML树的函数,并根据您的条件检查每个元素,并获取它的文本和附加内容它在您的选择字符串中,如何遍历DOM是您的选择

#first {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

所以基本上使用选择对象的四个变量你可以做到这一点,它们是,startContainer,startOffset,endContainer,endOffset