带有jquery的子串选择器?

是否可以使用jquery仅选择字符串的一部分? 例如,我有一个文本

Metuentes igitur idem latrones Lycaoniam magna parte campestrem

所以现在如果用户搜索字符串,我希望它被突出显示(例如我们使用粗体标记)

 

Metuentes igitur idem latrones Lycaoniam magna parte campestrem

然后,如果需要,我们可以恢复原始字符串。

  1. 第一个问题是我们是否可以使用jQuery选择这样的子字符串,并使用.css()等jQuery方法将样式应用于该元素。
  2. 第二个问题是如果我们没有这样的选择器,我们如何使用jQuery或javascript通过字符串操作来实现它

谢谢。

更新

感谢大家的努力。 这是一个小程序,我正在寻找的最终结果http://jsfiddle.net/TPg9p/3/干杯!

使用纯jQuery无法做到这一点。 你可以这样做:

 var search = 'Lycaoniam'; var orig = $('p').html(); var highlighted = orig.replace(new RegExp( search.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), 'gi' ), '$&'); $('p').html(highlighted); 

要还原为原始文本:

 $('p').html(orig); 

search.replace(...)部分允许处理特殊字符: http : //jsfiddle.net/wared/TPg9p/ 。

如果您知道要搜索的元素:

 var string = "Lycaoniam"; var e = $("elementSelector"); // put here your selector e.html(e.html().replace(new RegExp(search, "gi"), ""+search+"")); 

对于更多元素,只需循环遍历它们并进行替换。 要制作一个可切换的样式,我会使用一个自定义类:

  e.html(e.html().replace(new RegExp(search, "gi"), ""+search+"")); 

并删除它:

 $(".highlight").contents().unwrap(); 

.contents()。unwrap()不仅可以剥离类(必须相应地设置样式),还可以剥离标记。

基于此处的答案: 包裹元素内部的部分文本

你可以做以下事情:

 $('p').html(function(index, oldHtml){ return oldHtml.replace(/(amet)/g, '$1'); }); 

http://jsfiddle.net/YxMvq/

搜索文本并替换文本。

HTML:

 

Metuentes igitur idem latrones Lycaoniam magna parte campestrem

jQuery:

 $("#findButton").click(function(){ var inputText = $("#inputTextBox").val(); var mainText = $("#mainText").text(); var updatedText = "" + inputText + ""; mainText = mainText.replace(inputText, updatedText); $("#mainText").html(mainText); }); 

演示

你知道HTML什么时候创建你想要的单词吗? 然后我会建议做以下事情

 

Metuentes igitur idem latrones Lycaoniam magna parte campestrem

`

现在,如果你想要突出它只是做

 $(".js-highlightable").toggleClass("highlighted"); 

任何样式都可以在highligthed类中定义。 如果您希望能够仅将更改应用于该单个元素而不是所有具有js-highlightable类的元素,您也可以使用跨度的id