Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery捕获单词值_Javascript_Jquery - Fatal编程技术网

Javascript jquery捕获单词值

Javascript jquery捕获单词值,javascript,jquery,Javascript,Jquery,有没有办法用jquery或javascript获取单词值?在示例中: 搜索:五月当月报价 当我点击“搜索:”或“引号”或任何单词时,我是否会提醒该单词文本 更新: 这就是我的意思: 有没有一种方法可以在不将文本值包装到某个html元素的情况下获取文本值?要在较长的段落中查找特定的单词,您必须创建这些单词,并在段落中查找特定单词的坐标。映射每个单词的坐标后,就可以将窗口单击事件坐标与范围内的单词相匹配 这个问题与你所追求的有一些相似之处 简言之,我认为准确地获取被点击的单词应该是完全可行的,即使

有没有办法用jquery或javascript获取单词值?在示例中:

搜索:五月当月报价

当我点击“搜索:”或“引号”或任何单词时,我是否会提醒该单词文本

更新:

这就是我的意思:


有没有一种方法可以在不将文本值包装到某个html元素的情况下获取文本值?

要在较长的段落中查找特定的单词,您必须创建这些单词,并在段落中查找特定单词的坐标。映射每个单词的坐标后,就可以将窗口单击事件坐标与范围内的单词相匹配

这个问题与你所追求的有一些相似之处

简言之,我认为准确地获取被点击的单词应该是完全可行的,即使是在较长的段落中,但这肯定不是很容易,对于较长的文本,它可能会变得非常低效

编辑对于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);

    });
});
例如:

它在IE上不起作用如果不将它包装到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);
});
$('#foo').contents().each(函数(#,节点){
var nodelist=node.textContent.split(/\s/).map(函数(word){
返回$(''){
文本:word+“”,
单击:函数(){
警报($(this.text());
}
}).get(0);
});
$('#foo').empty().append(nodelist);
});
演示


我只是写了下来。仍然有大量的优化潜力,但它应该给你一个如何实现它的基本想法。

你的问题没有意义。一个说明您的目标的代码示例肯定会使这一点更清楚。您还可以使用来播放和发布HTML/CSS/javascript的片段。双击一个单词可以提醒您单击的单词的文本?类似于?@Niklas,似乎没有那么相似。这个问题似乎想检索所选单词,这个问题似乎想找出该单词/文本在页面上的位置。@David,除了查找页面上文本的位置外,这是实际查找段落中单击的单词的唯一方法。因为您必须查看TextRange对象内部,并将单击坐标具体映射到元素中的每个单词,要准确查找单击的单词,无需将其包装到HTML节点中。检查我的答案。@jAndy没有在我的页面中呈现任何内容,但我在源代码中看到了它。如果我删除
$('#foo').empty().append(nodelist)单击东西不起作用,可能是因为我有
elements@Niklas当前位置是的,我第一句话可能说得有点快@伦敦:你实际使用的是哪种浏览器?我的代码使用了es5功能,因此需要一个“新的”浏览器。@jAndy thanx作为回应,我可能使用ff&chrome最新版本,是的,肯定是

up@London:我不知道

标签怎么会把上面的代码搞砸。