- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在使用以下脚本来获取突出显示文本的位置:
function getSelectionCharOffsetsWithin(element) {
var start = 0, end = 0;
var sel, range, priorRange;
if (typeof window.getSelection != "undefined") {
range = window.getSelection().getRangeAt(0);
priorRange = range.cloneRange();
priorRange.selectNodeContents(element);
priorRange.setEnd(range.startContainer, range.startOffset);
start = priorRange.toString().length;
end = start + range.toString().length;
} else if (typeof document.selection != "undefined" &&
(sel = document.selection).type != "Control") {
range = sel.createRange();
priorRange = document.body.createTextRange();
priorRange.moveToElementText(element);
priorRange.setEndPoint("EndToStart", range);
start = priorRange.text.length;
end = start + range.text.length;
}
return {
start: start,
end: end
};
}
function alertSelection() {
var mainDiv = document.getElementById("detailBoxParagraph");
var sel = getSelectionCharOffsetsWithin(mainDiv);
alert(sel.start + ": " + sel.end);
}
现在,如果我在 $('p').text()
上使用它, 其中包含
Lorem ipsum dolor sit amet, consetetur sadipscing elitr.
一切正常。但我还需要获得 $ ('p').html()
中的位置由于<b>
,这显然是不同的标签
Lorem ipsum dolor `<b>sit</b>` amet, consetetur sadipscing elitr.
我该如何防止或改变这种情况?
编辑:
我忘了说,我的第一个想法是计算标 checkout 现的次数,然后使用该值来计算新位置,但不知何故这是愚蠢的。
我的第二种方法是用星号替换带有 .text()
的工作的标签。
编辑 #2
这是一个显示问题的杂乱 fiddle 。如果用鼠标突出显示文本,然后单击按钮,第一次它会正确设置为粗体。第二次将无法正常工作。
我会尽快收拾 fiddle
编辑 #3
我试了一下下面提到的突出显示插件,但我无法限制该功能只影响标记的字符串。它将突出显示所有匹配的单词或仅突出显示第一次出现的单词。谁能帮忙?
这是必要的代码:
jQuery.fn.highlight = function(pat) {
this.length = 1 ;
function innerHighlight(node, pat) {
var skip = 0;
if (node.nodeType == 3) {
var pos = node.data.toUpperCase().indexOf(pat);
if (pos >= 0) {
var spannode = document.createElement('span');
spannode.className = 'highlight';
var middlebit = node.splitText(pos);
var endbit = middlebit.splitText(pat.length);
var middleclone = middlebit.cloneNode(true);
spannode.appendChild(middleclone);
middlebit.parentNode.replaceChild(spannode, middlebit);
skip = 1;
}
}
else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
for (var i = 0; i < 1; ++i) { // So it will highlight only the first occurence.
i += innerHighlight(node.childNodes[i], pat);
}
}
return skip;
}
return this.length && pat && pat.length ? this.each(function() {
innerHighlight(this, pat.toUpperCase());
}) : this;
};
编辑 #4
好的,我试着理解那个 javscript。据我所知,这是无法完成的,因为 highlight() 是用一个简单的字符串作为参数调用的。它无法知道这个字符串的位置。我可以/应该解析位置,然后尝试从该位置搜索,突出显示第一次出现的位置,然后中止吗?
最佳答案
根据您的评论,这就是您想要完成的。
i will try to explain this as good as i can. English is not my native language, so sorry for the confusion. I would like to insert a html-tag before and after the highlighted text. To achieve this, i will have to get the beginning and end of the text.
假设 sit 是您要处理的突出显示的选择。
您可以使用 .wrap() 或 .after() 和 .before() 来完成此操作。
function alertSelection() {
$("b", $('#detailBoxParagraph')).wrap('<i/>'); // make the highlighted section inside a tag.
$("b", $('#detailBoxParagraph')).before('<u>Content inserted before </u> '); // insert an html before highlighted selections.
$("b", $('#detailBoxParagraph')).after(' <u>Content inserted after </u>'); // insert an html after highlighted selections.
}
$(function () {
alertSelection();
})
这里我将突出显示的文本设为斜体。
参见 jsFiddle 中的示例
引用
如果你想完成选中文本的高亮显示,可以使用jQuery highlight插件。
参见 jsFiddle. 中的示例
function getSelectionText() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
return text;
}
$(function () {
$('#detailBoxParagraph').mouseup(function (e){
$(this).removeHighlight();
$(this).highlight(getSelectionText());
});
});
关于javascript - 在 .html() 和 .text() 中获取高亮文本位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16103157/
我正在使用http://plugins.jquery.com/project/maphilight用于当我将鼠标悬停在图像 map 上时突出显示区域,但我也想在单击时保持其突出显示。单击另一区域时,前
所以目前,我正在尝试为三个 TextView 创建一个选定状态 目前,对于每个 TextView ( H M S ),文本都是红色的: 但是,当点击 H M 或 S 时,我希望它变成另一种颜色——白色
我们正在尝试添加一些与我们网站的访问者相关的视觉统计数据。我们现在关注访问者的位置。 我们想要创建一个 map (通过 jquery 插件): a) 在 map 上显示输入的 IP 的位置,或者如果第
我在 stackoverflow 上阅读了几个关于 RecyclerView 中项目突出显示的问题,但我什么也做不了,但我的问题应该更容易,因为我只想突出显示一个项目。我成功地做了一些事情,但它也突出
我正在使用 ElasticSearch 来索引文档。 我的映射是: "mongodocid": { "boost": 1.0, "store": "yes", "type": "strin
所以,这不是绝对需要,但我很好奇,如果它存在,我可能会想在某个时候使用它...... 我开发了一个网站(不是我的设计),其中某些文本区域有文本阴影,我注意到当突出显示所述文本时,它不是很清晰。我知道并
我并排显示了以下三个元素: Title T1 T2 T3 我想在用户点击后突出显示该元素(例如 T1)。类似于 stackove
我试图很好地显示 NSTextView 中突出显示的段落。现在,我通过创建一个带有背景颜色的 NSAttributedString 来做到这一点。这是一些简化的代码: NSDictionary *at
我怎样才能让我的类被突出显示为一个普通的原始类型,比如 int 或 double? 看一个例子: 当我声明 Test aloha; 时,我想要那个测试以与 int a 相同的方式突出显示. 最佳答案
我不介意语法着色,但我发现 Notepad++ 突出显示整个 Javascript 代码块,有效地使它们变暗并使其难以阅读,这非常烦人。它看起来像这样: 正如您所看到的,它用紫色遮盖了整个 JavaS
我想根据路由切换 routerLinkActive 的突出显示,我有一个仪表板组件,仪表板菜单项和标签菜单项都引用同一个组件,我想根据路线向 li 元素添加类对于仪表板,路线将是 http://loc
试图摆脱 IE 中的蓝色突出显示。这是一个选择标签。当您下拉下拉框并选择一个选项时,会出现蓝色突出显示。我在 Mac 上并且没有 IE,所以我无法测试它。它只是背景颜色:透明吗? 这是我所看到的图像。
我最近获得了 Microsoft Visual Studio 2015 企业 RC。在此屏幕截图中,我使用的是 C#。我突出显示了括号,但这些括号内的 block 没有像在 Visual Studio
有谁知道是否有任何 Sublime Text 2 包可用于为 SpecFlow/Gherkin 规范文件启用语法高亮显示? 最佳答案 有一些解决方案可以将 Sublime Text 与 Gherkin
我是 Elasticsearch 的新手。我希望在 Java 客户端中突出显示字段。如果我在 Windows 提示符下运行以下查询: { "query": { "filtere
如果想所有用户生效 请修改 /etc/vimrc (建议先cp一份) "==========================================================
我正在 Eclipse 中使用 PhoneGap for Android 编写一个应用程序。由于项目是Android项目,所以是Java视角。无论出于何种原因,Eclipse 都不会为我突出显示 HT
狼群! 我想突出显示我悬停的任何元素,就像 Chrome 开发工具所做的那样。 Picture of Chrome Dev Tools 请注意整个元素是如何浸透在蓝色调中的?这不像添加背景颜色或线性渐
我是一名优秀的程序员,十分优秀!