繁体   English   中英

React:在div中使用多个span元素选择事件

React: select event in div with multiple span elements

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个带有解析文本的React组件:

html结构类似于:

<div>
    <span>It's a </span>
    <span className="highlight-text">cat</span>
</div>

我如何拥有一个事件侦听器,使我可以在此div中传递所有选定的文本? 例如,如果我选择“ ca”,则事件侦听器可以获取e.target.value =“ ca”。

高亮部分可能会在全文中重复,例如:

<div>
    <span>It's a slim cat, not a fat </span>
    <span className="highlight-text">cat</span>
</div>

在这种情况下,选择侦听器将获得第二部分字符串,即整个文本的开始位置。

一种

2 个回复

这是想到的第一件事。

// Example impl
<Component text="This is a cat" highlight="is a" />

// Component render
render() {
    const {
        text,
        highlight,
    } = this.props;
    // Returns the start index for your high light string
    // in our example 'is a' starts at index 5
    const startHighlightTextIdx = text.search(highlight);

    // Create a substring for the first part of the string
    // ie: 'This is '
    const startText = text.substring(0, startHighlightTextIdx);

    // Create a substring for the last part of the string
    // For this substr we want to start where our startHighlightTextIdx starts 
    // and we want to add the length of the highlighted string
    // in order to ignore the highlighted string
    // ie: start at index 5 + 4 (highlight text length) so substr(9) to end
    const endText = text.substring(
        startHighlightTextIdx + highlight.length,
    );
    <div>
        <span>{startText}</span>
        <span className="highlight-text">{highlight}</span>
        <span>{endText}</span>
    </div>
}

v2:
// This might be a cleaner solution
// explode by the hightlight string and grab index 0 and last
// this outputs ["This ", " cat"]
const textParts = text.split(highlight);
const startText = textParts[0];
const endText = textParts[1];

我自己得到了一个答案,为了获得所选文本,我可以只使用window.getSelection()。

但不确定是否有风险

1 将多个span元素添加到div元素

晚上好,为可能看起来很琐碎的问题道歉。 我似乎无法全神贯注于我想要完成的事情。 我觉得这很简单,我很想念。 我正在尝试向错误div添加多个范围,以便在进行输入且该字段失去焦点时,可以删除显示错误的范围。 这里是它的一个小提琴这里 我已经尝试过使用for循环,但是不能完 ...

2014-02-07 00:00:13 2 610   jquery
2 如何添加多个元素,例如

要么