有没有一种方法可以使用jQuery选择具有特定内部值的特定类

时间:2019-08-15 06:43:10

标签: javascript jquery css

例如,一个div中有6个具有相同类的“ p”标签,但是一些“ p”标签内部包含成员文本,而有些具有非成员文本。我想选择所有带有“成员”内部文本的“ p”标签,并使用jquery向它们添加另一个类

这是我要对其执行操作的代码

<div>
<p class="customClass">Member</p>
<p class="customClass">Non-Member</p>
<p class="customClass">Member</p>
<p class="customClass">Non-Member</p>
<p class="customClass">Member</p>
</div>

这是预期的结果

<div>
<p class="customClass member">Member</p>
<p class="customClass">Non-Member</p>
<p class="customClass member">Member</p>
<p class="customClass">Non-Member</p>
<p class="customClass member">Member</p>
</div>

3 个答案:

答案 0 :(得分:2)

一个选项是filter所有.customClass,仅包含“成员”并添加类.member

$(".customClass").filter(function() {
  return $(this).text().trim() === "Member"
}).addClass("member");
.member {
  background-color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <p class="customClass">Member</p>
  <p class="customClass">Non-Member</p>
  <p class="customClass">Member</p>
  <p class="customClass">Non-Member</p>
  <p class="customClass">Member</p>
</div>

答案 1 :(得分:0)

使用以下内容:

    $("p:contains(Member)")

这将返回所有包含文本“ Member”的“ p”标签。然后分配其他类别:

    $("p:contains(Member)").addClass("member");

如果您只希望“成员”而不包含“非成员”,请使用:

    $("p:not(:contains(Non-Member))").addClass("member")

您可以通过在选择器文本中添加更多内容来使其更加具体。我还没有尝试过,但是可以尝试一下:

    $(".customClass p:not(:contains(Non-Member))").addClass("member")

要选择所有带有“ customClass”类且不包含文本Non-Member的标签。刚刚进行编辑,现在它选择所有不包含文本“ Non-Member”的“ customClass”类的所有“ p”标签,然后向其中添加其他类“ member”。

答案 2 :(得分:-1)

您只需要这样编写选择器:


$(".member").exampleMethod();

这是一个按类的选择器,是一个非常简单且基本的解决方案,因此我建议您阅读jquery文档

https://api.jquery.com/category/selectors/