【问题标题】:how to select class=" * " in jQuery .html()如何在 jQuery .html() 中选择 class="*"
【发布时间】:2016-12-01 13:49:28
【问题描述】:

如何在从 .html() 返回的代码中选择类(或任何其他)string="*" ?

如果我们将元素的 html 写入另一个元素(作为文本)。 (如带有预览的 sn-p)

<div class="myClass">1</div>
<div class="myElem">2</div>
<div class="myBox">3</div>

这些 div 不是对象,而是文本,所以:

&lt;div class="myClass"&gt; 1 &lt;/div&gt;
&lt;div class="myElem"&gt; 2 &lt;/div&gt;
&lt;div class="myBox"&gt; 3 &lt;/div&gt;

如何选择字符串“class”及其值/内容并替换为&lt;strong&gt; + string + &lt;/strong&gt;,例如突出显示此html代码中的某些内容(实际上是文本)。

class="myClass"
class="myElem"
class="myBox"

类似于class=" * " ...

这样我就可以选择和替换了:

var string = "class=*"
var regex = new RegExp(string, 'gi');
var text = $("#htmlCode").html().replace(regex, '<span class="strong">' + string + '</span>');
$("#htmlCode").html(text);

【问题讨论】:

  • 类似:$("div").html(function() { return "&lt;strong&gt;" + this.getAttribute("class") + "&lt;/strong&gt;"; }) (fiddle) ?
  • 不,div 是文本而不是对象。也许使用 < 会更清楚。 >... (jsfiddle.net/L3491c9r/1)

标签: jquery html regex highlight


【解决方案1】:

这将是您正在寻找的代码:

$(function(){
  var $context = $("#context");
  var regex = /(<div[\s]*class=\"[^\"]*\">)([^<]*)(<\/div>)/gmi;
  $context.html($context.html().replace(regex, '$1<strong>$2</strong>$3'));
});
strong{
  background: yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="context">
  <div class="myClass">1</div>
</div>

但老实说,使用.html()

  1. 销毁事件
  2. 触发 DOM 重新生成

既然你提到了:

例如突出显示

我建议使用mark.js 而不是以这种方式实现高亮组件。

【讨论】:

  • 不幸的是,这段代码对我不起作用,根据你的 sn-p 这不是我要找的。
    1
    不是 DOM 对象/元素,它是元素

    中的文本,例如:

    1
    所以小于“
猜你喜欢
  • 2018-03-10
  • 2011-06-20
  • 2016-09-09
  • 1970-01-01
  • 1970-01-01
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
  • 2012-02-08
相关资源
最近更新 更多