【问题标题】:JQuery to add div to text and clear it laterJQuery 将 div 添加到文本并稍后清除它
【发布时间】:2014-04-03 14:54:14
【问题描述】:

我有一个 HTML 页面,其中有一些用户可以搜索的内容。这是 HTML 示例

 <span class="name">Red Apple</span>
 <span class="location">Texas</span>
 <span class="date">Mon, Apr 07, 11:15 AM</span>

 <span class="name">California Orange</span>
 <span class="location">California</span>
 <span class="date">Mon, Apr 07, 11:15 AM</span>

如果用户输入“Apr”并点击搜索,我想像这样向两个匹配的 span 内容添加一个 div

<span class="date">Mon, <div class="red">Apr<div> 07, 11:15 AM</span>

稍后当用户点击清除搜索时,我也想删除这些。

使用 JQuery 执行此操作的最佳方法是什么?

【问题讨论】:

  • 你可以用 addClass 做到这一点 - removeClass - 看看这里api.jquery.com/addclass - api.jquery.com/removeclass - 不需要添加一个div
  • 必须匹配整个单词还是只匹配其中的一部分?这可能会有所帮助(虽然工作过滤器阻止了该网站,但不确定)gotoquiz.com/web-coding/programming/javascript/…
  • 您的用户在哪里输入这些数据?
  • 必须匹配部分文本而不是整个文本。用户有一个搜索文本框,他在其中输入搜索字符串。

标签: jquery html add


【解决方案1】:

由于您不想使用插件,您可以使用replace()

$('span').html(function() {
    return $(this).text().replace(searchString, '<div class="red">' + searchString + '</div>');
});

请注意,将 div 嵌套在 span 中是无效的。此外,上面的示例区分大小写(即red 不会匹配单词Red)。

为了去除突出显示,您可以使用unwrap(),定位已添加的div.red

$('div.red').contents().unwrap();

Here's a fiddle

【讨论】:

  • 这行得通。谢谢!我用 span 替换了 div,因为 span 中的 div 无效。
【解决方案2】:

试试higlighting jQuery plugin

Plugin

js

var hightlight = $('#highlight'),
    txt = $('#txt');
$('#search').click(function () {
    hightlight.highlight(txt.val());
});
$('#clear').click(function () {
    hightlight.removeHighlight();
});

HTML

<div id="highlight"> <!--  Wrap your searching area in div-->
 <span class="name">Red Apple</span>
 <span class="location">Texas</span>
 <span class="date">Mon, Apr 07, 11:15 AM</span>
 <span class="name">California Orange</span>
 <span class="location">California</span>
 <span class="date">Mon, Apr 07, 11:15 AM</span>

</div>
<input type="text" id="txt" /> <!-- Searching textbox -->
<input type="button" id="search" value="serach" /> <!-- Search on button click-->
<input type="button" id="clear" value="clear" /> <!-- clear highlight on button click-->

CSS

.highlight {
    background-color: red
}

Fiddle Demo

【讨论】:

  • 谢谢,但不能使用插件。必须使用 JQuery 或 Javascript 来完成。我更喜欢 JQuery。
  • 如果是用于个人项目我会使用它,但在工作中我们不能使用其他 JQuery 插件。
猜你喜欢
  • 2023-03-12
  • 2010-09-08
  • 1970-01-01
  • 2020-04-22
  • 1970-01-01
  • 2015-10-18
  • 2015-03-16
  • 1970-01-01
  • 2011-10-28
相关资源
最近更新 更多