首页 > 解决方案 > 如果里面有文字

是 X 然后 addClass

问题描述

我想检查最近的内容是什么,<p>并相应地将一个类添加到一个 div 中。

这就是我卡住的地方。

$('p').each(function () {
    if ($('p').text() == 'E. A. K') {
        $('.pl1').addClass('service');
    }else{
        $('.pl2').addClass('service');
    }
});
.service:after{content:"(service)"}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>E. A. K.</p>
<p>F. F.</p>

<span class=pl1>Player 1</span><br>
<span class=pl2>Player 2</span>

所以如果第一个<p>是 EAK 然后.pl1有类service 如果第一个<p>是 FF 然后.pl2有类service

考虑到有很多<p>都包含这两个内容。并且会不时添加一些新的。

标签: javascriptjqueryhtmlcss

解决方案


首先,您需要稍微加快速度,并确保在正确的位置关闭括号。

你说the <p> that appears closest to the top of the body,那么你只想要1,所以不需要循环遍历每个<p>

这应该做你想做的,但仍然不确定,因为你的逻辑有点奇怪,无论如何希望它有所帮助。

$('body p:first').filter(function() {
  if ($(this).text() == 'E. A. K.') {
    $('.pl1').addClass('service');
  } else {
    $('.pl2').addClass('service');
  }
});

演示

$('body p:first').filter(function() {
  if ($(this).text() == 'E. A. K.') {
    $('.pl1').addClass('service');
  } else {
    $('.pl2').addClass('service');
  }
});
.service:after {
  content: "(service)"
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>E. A. K.</p>
<p>F. F.</p>

<span class=pl1>Player 1</span><br>
<span class=pl2>Player 2</span>


推荐阅读