【问题标题】:Get the current word in paragraph on click event in jquery在jQuery中的点击事件上获取段落中的当前单词
【发布时间】:2012-09-01 12:55:14
【问题描述】:

我正在尝试构建一个允许人们获取单词或短语的工具(在选择时),选择部分已完成,但单词部分未完成。

当有人点击一个单词时,我需要能够获取当前单词,我找到了这个解决方案

get word click in paragraphs

不幸的是,这段代码更改了所有单词并为每个单词添加了<span>,这导致了我这边的问题,因为我无法在文本中添加 html 标签(css 文件可以导入或动态添加)

如果可能的话,有没有更好的方法来实现这一点?

前:

Lorem ipsum dolor sit amet,consectetur adipiscing elit。多内克 ante sat amet nisl consequat volutpat。

如果我点击“坐”,那么我会提醒“坐”

【问题讨论】:

  • 你想要点击的文本周围有什么标签?
  • 双击(突出显示文本)就足够了吗?

标签: jquery word


【解决方案1】:

好吧,对于您的解决方案,您需要处理 selectionsdoubleclick 事件作为一件棘手的事情,并通过双击事件在生成的范围内获取选定的单词。

如果不想引入新标签,没有别的办法。


试试这个:

现场演示: http://jsfiddle.net/oscarj24/5D4d3/

$(document).ready(function() {

    /* set hand cursor to let know the user that this area is clickable */
    var p = $('p');
    p.css({ cursor: 'pointer' });

    /* doubleclick event working with ranges */
    p.dblclick(function(e) {
        var selection = window.getSelection() || document.getSelection() || document.selection.createRange();
        var word = $.trim(selection.toString());
        if(word != '') {
            alert(word);
        }
        /* use this if firefox: selection.collapse(selection.anchorNode, selection.anchorOffset); */
        selection.collapse();
        e.stopPropagation();
    });

});​

希望这会有所帮助:-)

【讨论】:

  • 是的,虽然我收到了NS_ERROR_XPC_NOT_ENOUGH_ARGS: Not enough arguments [nsISelection.collapse] [Break On This Error] range.collapse(); 错误
  • 当我删除 range.collapse(); 时它可以工作,我应该删除它吗?
  • @PatREllery 这是 Firefox 中的常见错误(不仅仅是这段代码)或与填充参数相关的东西(但不适用于这种情况)。好吧,删除它不会导致任何重要的事情,它只会使文本突出显示,直到用户单击窗口的其他部分并且范围折叠:-) 在 Firefox 上评论该行并查看。
  • @PatREllery for Firefox 使用这个: range.collapse(range.anchorNode, range.anchorOffset); (将解决您的错误)
  • 这仅仅是因为双击创建了一个选择吗?我不认为这可以适应,比如说,单击或悬停在一个单词或字母上,对吧?
【解决方案2】:

Oscar Jara's answer(上图)说,没有其他方法 [返回点击的单词] 如果你不想引入新标签。 2012 年可能是这样,但目前我们有 getSelection:

DocumentOrShadowRoot 接口的 getSelection() 属性 返回一个 Selection 对象,表示被选中的文本范围 用户,或插入符号的当前位置。

我在 Windows Chrome 63.0.3239.84 和 Windows Firefox 56.0 下工作。要使用其他浏览器进行测试,请使用此jsfiddle example 进行测试

    window.getSelection();

涉及 getSelection 的相关 SO 问题:

Get a word by single click

Detect which word has been clicked on within a text

Return Sentence That A Clicked Word Appears In

【讨论】:

  • 有一个问题:点击空白区域也会触发该功能!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-03
相关资源
最近更新 更多