我在一个 JSFiddle 中创建了一个解决方案,在Selecting text before and after word
首先,我创建了一个段落来保存要选择的文本
<p id="yourTextContainer">Lorem ipsum data sid amet</p>
然后,在 JavaScript 中,我将段落拆分为 span,将每个单词的索引放在 name 属性中。然后,当单击一个单词时,它使用索引返回之前的所有单词和之后的所有单词。
var textindex;
var textbefore;
var textafter;
$(document).ready(function(){
var words=$("#yourTextContainer").text().split(' ');
$("#yourTextContainer").html("");
$.each(words, function(i,val){
//wrap each word in a span tag
$('<span name="'+ i+'"+ />').text(val +" ").appendTo("#yourTextContainer");
});
$("#yourTextContainer span").live("click",function(event){event.stopPropagation();
$("#yourTextContainer span").css("background-color","white");
$(this).css("background-color","blue");
//gets the text of clicked span tag
var textselected = $(this).text();
textindex = $(this).attr("name");
alert("You just selected "+textselected+" index " + textindex);
textbefore= "";
textafter = "";
$("span").each(function (index) {
// alert("LOOPING INDEX " + index);
if (index<(textindex))
textbefore = textbefore + $(this).text() + " ";
if (index>(textindex))
textafter = textafter + $(this).text() + " ";
});
alert("Text before is "+textbefore );
alert("Text after is "+textafter );
});
});
例如,如果你点击“ipsum”,JS会提醒,“Lorem”作为前面的文本,“data sid amet”作为“ipsum”后面的文本。
希望这可以帮助!您也可以运行小提琴来了解我的意思。