标记文本中的几个单词
Tag few words from text
我们有一个HTML页面。是否可以(用鼠标)选择一段中的几个单词,获得对这些所选单词的引用并封装它们,比如用程序化的<span>...</span>
标签?我们可以使用jQuery或HTML5/CSS3?
您可以使用mouseup
处理程序和getSelection
。假设您有一个名为testtagging
的div,那么这是一种将跨度添加到该div中所选文本的方法。
$('#testtagging').on('mouseup',tag);
function tag(e){
tagSelection('<span style="color:red">$1</span>');
}
function tagSelection(html) {
var range, node;
if (document.selection && document.selection.createRange) {
//IE
range = document.selection.createRange();
range.pasteHTML(html.replace(/'$1/,range.text));
return true;
}
if (window.getSelection && window.getSelection().getRangeAt) {
//other browsers
range = window.getSelection().getRangeAt(0);
node = range.createContextualFragment(
html.replace(/'$1/,range.toString())
);
range.deleteContents();
range.insertNode(node);
}
return true;
}
[edit]也调整为与IE一起使用。JsFiddle也适用于
JSFiddle工作示例
建议将所有段落单词包装成span
元素:
var r = /('S+)/ig;
var text = $("p").text();
$("p").html(text.replace(r, "<span class='w'>$1</span>"));
然后绑定悬停/单击事件:
$("p > .w").on("hover", function()
{
$(this).toggleClass("hover");
})
.on("click", function()
{
$(this).toggleClass("selected");
});
如果要解析选定文本范围内的单词,则应使用window.getSelection()
。
请参阅此问题或要求我调整此代码。
相关文章:
- 操作员”;新的“;根据我想在几个JavaScript文件中使用的类,在JavaScript中使用
- 字母计数:返回重复字母数最多的第一个单词
- 可以't将几个数字设置为<输入类型=“;数字“>
- 当加载几个js文件时,defer属性应该如何工作
- 使用几个<脚本>标签不会't工作-只调用一个脚本
- 我如何从字符串中选出第一个单词的第一个字母,然后再选出第二个单词
- 如何从数组中删除几个相同的项
- 包括php文件和几个js文件
- 在几个元素上模拟onclick事件
- 如何更改与Backbone集合中的模型相关联的几个元素的css属性
- 如何在几个jQuery对象上调用jQuery函数
- 测试字符串中的多个单词
- AJAX数据包含一个或多个单词.
- 输出包含3个单词的字符串中的前2个单词
- 标记文本中的几个单词
- 使用正则表达式提取句子中的最后几个单词
- 第一个单词的正则表达式是星期几
- 如何调用IE9的Ctrl-F并突出显示几个单词
- Javascript:如何遍历文档并更改几个单词
- 通过几个用户的输入进行搜索,并揭示其中最常见的单词