0

尝试通过将类应用于非常特定的字符组来减少文档中的 HTML。在我的示例中,它是一组星号,它们在文档中显示为 ** 并且它们包含的代码是

<span class="asterisk">**</span>

但是页面上有超过 50 个实例。所以我正在寻找一种方法将类动态添加到定义的组中,在这种情况下**

到目前为止,提出的最有效的解决方案是

<script>
  $("span:contains('**')").addClass("asterisk");
</script>

这减少了所需的代码量并将其带到<span>**</span>

在下面的示例中,如果我希望所有 '**' 都表示食品并获得我可以做的课程

<span>**</span>Indicates food related word
<p>Intelligentsia high life shoreditch keffiyeh skateboard, hoodie master cleanse helvetica. Fanny pack <span>**</span>raw denim street art, wes anderson gentrify lomo lo-fi. </p>
<p>Selfies typewriter you probably haven't heard of them <span>**</span>small batch street art, cliche raw denim try-hard sartorial cardigan pitchfork. Forage flannel portland, small batch before they sold out +1 post-ironic <span>**</span>PBR skateboard mixtape fap try-hard banjo bicycle rights. Vinyl banksy banjo, <span>**</span>gastropub <span>**</span>four loko art party <span>**</span>food truck next level.</p> 

看看这怎么会重复?所以我的意图是在我想要选择的内容旁边输入“**”。然后该类被动态添加到定义的字符组中。

<p>**Chambray letterpress **kale **chips **high life 90's wolf yr semiotics mcsweeney's biodiesel, flannel fixie retro.</p> 
<p>Meh wayfarers fap scenester retro single-origin **coffee, cliche craft **beer 8-bit lo-fi selvage yr mixtape 90's.</p>

可以使用一些帮助来缩小从这里到哪里去完成这个。

4

4 回答 4

2

最清晰的使用方法.addClass是简单地指定要添加的类名:

$("span:contains('**')").addClass("asterisk");

addClass可以接受一个函数,但这是一种高级用法,因为当您想以不同的方式处理 jQuery 集中的每个元素时。由于您想对每个元素执行相同的操作,.addClass因此不需要函数。

于 2013-05-13T19:04:17.667 回答
0

如果你真的想替换类名,你可以这样做:

$("span.some_class").addClass( function(index, current_class) {
     return current_class + ' new_class' 
});

如果要更改类名而不是添加类名,可以从返回值中消除 current_class。

于 2013-05-13T19:13:52.877 回答
0

您错误地混合了引号,并且字符串是不可变的,因此String.replace不会更改原始字符串;它返回一个新的。

value = value.replace('**', '<span class="asterisk">**</span>');
// Now you need to actually do something with value
于 2013-05-13T19:02:04.473 回答
0

在最小化代码输入的同时最终效果最好的是

  <script>
    var value = $(document.body).html(),
    re = /\*\*/g;
    str = value.replace(re, '<span class="asterisk">**</span>');
    $(document.body).html(str);
  </script>

这使将来输入内容的人不必记住将 a 添加<span>到 **

希望这有助于其他人根据您的需要将字符串添加到他们的项目中。

于 2013-05-13T21:31:41.540 回答