有没有办法取消选择特定标签中的文字。例如。
<p id ="first">first text</p>
<p id ="second">Second text</p>
如果从两个标签中选择文本,但我想取消选择带有第一个id的标签。我知道您可以使用
取消选择所有选定的文本window.getSelection().removeAllRanges();
但有没有办法取消选择具有特定ID的文字?
答案 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