jQuery在标签中突出显示元素中的文本片段

米克德克斯

我想使用jQuery选择并返回搜索到的文本。

问题是; 文本的某些部分可能位于<span>或其他内联元素中,因此当'waffles are tasty'在以下文本中搜索时'I'm not sure about <i>cabbages</i>, but <b>waffles</b> <span>are</span> <i>tasty</i>, indeed.',您不会得到任何匹配,而文本在显示时不会被人们打扰。

让我们以这个HTML为例:

<div id="parent">
  <span style="font-size: 1.2em">
    I
  </span>
  like turtles 
  <span>
    quite a
  </span>
  lot, actually.

  <span>
    there's loads of
  </span>
  tortoises over there, OMG

  <div id="child">
    <span style="font-size: 1.2em">
      I
    </span>
    like turtles 
    <span>
      quite a
    </span>
    lot, actually.

    TURTLES!
  </div>
</div>

使用此(或类似)JavaScript:

$('div#parent').selectText({query: ['i like', 'turtles', 'loads of tortoises'], caseinsensitive: true}).each(function () {
  $(this).css('background-color', '#ffff00');
});
//The (hypothetical) SelectText function would return an array of wrapped elements to chain .each(); on them

您可能希望产生以下输出:(显然,没有注释)

<div id="parent">
  <span style="font-size: 1.2em">
    <span class="selected" style="background-color: #ffff00">
      I
    </span> <!--Wrap in 2 separate selection spans so the original hierarchy is disturbed less (as opposed to wrapping 'I' and 'like' in a single selection span)-->
  </span>
  <span class="selected" style="background-color: #ffff00">
    like
  </span>
  <span class="selected" style="background-color: #ffff00"> <!--Simple match, because the search query is just the word 'turtles'-->
    turtles
  </span> 
  <span>
    quite a
  </span>
  lot, actually.

  <span>
    there's
    <span class="selected" style="background-color: #ffff00">
      loads of
    </span> <!--Selection span needs to be closed here because of HTML tag order-->
  </span>
  <span class="selected" style="background-color: #ffff00"> <!--Capture the rest of the found text with a second selection span-->
    tortoises
  </span>
  over there, OMG

  <div id="child"> <!--This element's children are not searched because it's not a span-->
    <span style="font-size: 1.2em">
      I
    </span>
    like turtles 
    <span>
      quite a
    </span>
    lot, actually.

    TURTLES!
  </div>
</div>

(假设的)SelectText函数会将所有选定的文本包装在<span class="selected">标签中,而不管搜索的部分是否位于其他内联元素(如<span>,''等)中。它不搜索子级<div>内容,因为它不是内联元素。

是否有一个类似这样的jQuery插件?(将搜索查询包裹在span标记中并返回它们,而不考虑所找到的文本的某些部分是否可能位于其他内联元素中?)

如果没有,那么如何创建这样的功能呢?这个函数有点像我在寻找什么,但是当找到的文本的一部分嵌套在其他内联元素中时,它不会返回选定的跨度和中断数组。

任何帮助将不胜感激!

鲁宾·卡祖莫夫(Ruben Kazumov)

小菜一碟!看到这个

折叠符号:

$.each(
    $(...).findText(...), 
    function (){
        ...
    }
);

内联符号:

$(...).findText(...).each(function (){
        ...
    }
);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

突出显示用户选择的文本片段,无需嵌套标签

来自分类Dev

突出显示Web元素中的特定文本

来自分类Dev

如何使用Chrome的文本片段功能突出显示字符串的所有实例?

来自分类Dev

粘贴在代码文件中的随机文本片段

来自分类Dev

jQuery从列表中查找文本并突出显示

来自分类Dev

jquery 突出显示表中的搜索文本

来自分类Dev

从Wikipedia文章中的表格中逐一复制文本片段

来自分类Dev

在IFrame中突出显示文本

来自分类Dev

在UIWebView中突出显示文本

来自分类Dev

在UITextView中突出显示文本

来自分类Dev

在Rails中突出显示文本

来自分类Dev

突出显示外壳中的文本

来自分类Dev

在UITextView中突出显示文本

来自分类Dev

突出显示div中的文本

来自分类Dev

jQuery自动完成突出显示表格列表中的文本

来自分类Dev

jQuery移动元素突出显示Firefox中的表格单元

来自分类Dev

如何在Python中从字符串创建Google Like文本片段?

来自分类Dev

在 textarea 中显示突出显示的文本

来自分类Dev

突出显示导航菜单中的活动标签

来自分类Dev

Android:在SpannableString中突出显示<em>标签

来自分类Dev

Highcharts 中的突出显示 x 轴标签

来自分类Dev

是否有适当的方式在文本中突出显示#标签和@用户?

来自分类Dev

单击页面中的#标签时,有什么方法可以使文本突出显示?

来自分类Dev

仅在单击第5行元素或第3行元素中的文本框超出焦点时,才使用JQuery突出显示表行

来自分类Dev

在Tkinter中单击时突出显示文本

来自分类Dev

如何在乳胶中突出显示文本

来自分类Dev

在PySide.QTextEdit中突出显示文本

来自分类Dev

突出显示iOS中的搜索文本

来自分类Dev

在android的webview中突出显示选定的文本

Related 相关文章

热门标签

归档