有没有办法用jquery或javascript捕获单词值?在示例中:
搜索:五月份的行情
当我点击“搜索:”或“引号”或任何字词时,我会提醒该字词文字?
更新:
这就是我的意思:
有没有办法可以获取文本值而不将其包装到某个html元素中?
答案 0 :(得分:1)
要查找较长段落中的特定字词,您必须创建Range objects和TextRange's以查找段落中特定字词的坐标。一旦映射了每个单词的坐标,就可以将窗口单击事件坐标与该范围内的单词进行匹配。
Retrieving DOM textnode position的问题与你所追求的有些相似。
简而言之,我认为准确地获取被点击的单词应该是完全可行的,即使是在较长的段落中,但它肯定不是非常容易,对于更长的文本,它最终可能会非常效率低下。
对于mozilla / webkit浏览器,编辑,您可以这样做:
$(document).ready(function() {
$("body").click(function(){
var s = window.getSelection();
s.modify('extend','backward','word');
var b = s.toString();
s.modify('extend','forward','word');
var a = s.toString();
s.modify('move','forward','character');
alert(b+a);
});
});
例如: http://jsfiddle.net/niklasvh/rD2uE/
它不适用于IE< = 8,但您可能需要使用IE选择来执行不同类型的解决方案。
答案 1 :(得分:1)
如果不将其包装在HTML节点中,则无法执行此操作。您可以将一些Javascript魔法应用于“未包装的文本”,这基本上意味着Textnode
。这看起来像是:
$('#foo').contents().each(function(_, node) {
var nodelist = node.textContent.split(/\s/).map(function( word ) {
return $('<span>', {
text: word + ' ',
click: function() {
alert( $(this).text() );
}
}).get(0);
});
$('#foo').empty().append(nodelist);
});
我刚写下来。仍然有很多优化潜力,但它应该为您提供如何实现它的基本想法。