jquery捕获单词值

时间:2011-05-30 21:46:12

标签: javascript jquery

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

搜索:五月份的行情

当我点击“搜索:”或“引号”或任何字词时,我会提醒该字词文字?

更新:

这就是我的意思:

http://jsfiddle.net/BE68L/

有没有办法可以获取文本值而不将其包装到某个html元素中?

2 个答案:

答案 0 :(得分:1)

要查找较长段落中的特定字词,您必须创建Range objectsTextRange'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);
});

演示http://jsfiddle.net/LFCWp/

我刚写下来。仍然有很多优化潜力,但它应该为您提供如何实现它的基本想法。