jquery - 如果 sibling 有一个特定的类,则隐藏一个 div

标签 jquery html css if-statement hide

我有一个带有 grafico 类的 div,它有两个 child 。其中之一,具有“terminal-alert”类的,如果它是兄弟,则不应出现,grafico-arc 具有特定的“green”类。 我尝试了下面的 jquery,并设法隐藏了“terminal-alert”div,但它没有出现在兄弟没有“green”类的那些上。

$(".grafico-arc").each(function() {
  if ($(this).hasClass("green")) {
    $(".terminal-alert").siblings().css("display", "none");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="sliderCard">
  <div class="grafico">

    <div class="grafico-arc green">
      <div class="topo"></div>

      <div class="consumoTerminal">
        <h3>1 <span>GB</span></h3>
        <p>(21) 98899-0805</p>
        <button class="detail"></button>
      </div>

    </div>

    <div class="terminal-alert">
      <p>Saldo esgotando <a href="#">Mais internet</a></p>
    </div>

  </div>
</div>

<div class="sliderCard">
  <div class="grafico">

    <div class="grafico-arc yellow">
      <div class="topo"></div>

      <div class="consumoTerminal">
        <h3>2 <span>GB</span></h3>
        <p>(21) 98899-0805</p>
        <button class="detail"></button>
      </div>

    </div>

    <div class="terminal-alert">
      <p>Saldo esgotando <a href="#">Mais internet</a></p>
    </div>

  </div>
</div>

<div class="sliderCard">
  <div class="grafico">

    <div class="grafico-arc red">
      <div class="topo"></div>

      <div class="consumoTerminal">
        <h3>3 <span>GB</span></h3>
        <p>(21) 98899-0805</p>
        <button class="detail"></button>
      </div>

    </div>

    <div class="terminal-alert">
      <p>Saldo esgotando <a href="#">Mais internet</a></p>
    </div>

  </div>
</div>

最佳答案

这可能不是您希望的方式,因为您指定了 jQuery,但我还是想把它留在这里。 (jQuery 版本更靠后)

CSS 版本:

您可以通过仅使用 CSSAdjacent Sibling Combinator 实现相同的原则.

"The adjacent sibling combinator (+) separates two selectors and matches the second element only if it immediately follows the first element, and both are children of the same parent element."

.grafico-arc.green + .terminal-alert {
  display: none;
}
<div class="sliderCard">
    <div class="grafico">
        <div class="grafico-arc green">
            <div class="topo"></div>

            <div class="consumoTerminal">
                <h3>1 <span>GB</span></h3>
                <p>(21) 98899-0805</p>
                <button class="detail"></button>
            </div>
        </div>
        <div class="terminal-alert">
            <p>Saldo esgotando <a href="#">Mais internet</a></p>
        </div>
    </div>
</div>

<div class="sliderCard">
    <div class="grafico">
        <div class="grafico-arc yellow">
            <div class="topo"></div>
            <div class="consumoTerminal">
                <h3>2 <span>GB</span></h3>
                <p>(21) 98899-0805</p>
                <button class="detail"></button>
            </div>
        </div>
        <div class="terminal-alert">
            <p>Saldo esgotando <a href="#">Mais internet</a></p>
        </div>
    </div>
</div>
<div class="sliderCard">
    <div class="grafico">
        <div class="grafico-arc red">
            <div class="topo"></div>
            <div class="consumoTerminal">
                <h3>3 <span>GB</span></h3>
                <p>(21) 98899-0805</p>
                <button class="detail"></button>
            </div>
        </div>
        <div class="terminal-alert">
            <p>Saldo esgotando <a href="#">Mais internet</a></p>
        </div>
    </div>
</div>

jQuery 版本

您只需要使用匹配两个类(绿色和 grafico-arc)的选择器来运行您的函数。使用此方法不需要使用 hasClass 的额外条件语句:

$(".grafico-arc.green").each(function() {
   $(this).siblings(".terminal-alert").css("display", "none");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="sliderCard">
  <div class="grafico">
    <div class="grafico-arc green">
      <div class="topo"></div>
      <div class="consumoTerminal">
        <h3>1 <span>GB</span></h3>
        <p>(21) 98899-0805</p>
        <button class="detail"></button>
      </div>
    </div>
    <div class="terminal-alert">
      <p>Saldo esgotando <a href="#">Mais internet</a></p>
    </div>
  </div>
</div>
<div class="sliderCard">
  <div class="grafico">
    <div class="grafico-arc yellow">
      <div class="topo"></div>

      <div class="consumoTerminal">
        <h3>2 <span>GB</span></h3>
        <p>(21) 98899-0805</p>
        <button class="detail"></button>
      </div>
    </div>
    <div class="terminal-alert">
      <p>Saldo esgotando <a href="#">Mais internet</a></p>
    </div>
  </div>
</div>
<div class="sliderCard">
  <div class="grafico">
    <div class="grafico-arc red">
      <div class="topo"></div>
      <div class="consumoTerminal">
        <h3>3 <span>GB</span></h3>
        <p>(21) 98899-0805</p>
        <button class="detail"></button>
      </div>
    </div>
    <div class="terminal-alert">
      <p>Saldo esgotando <a href="#">Mais internet</a></p>
    </div>
  </div>
</div>

关于jquery - 如果 sibling 有一个特定的类,则隐藏一个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47638932/

相关文章:

javascript - 如何防止javascript被多次加载

javascript - jQuery - 对话框的多个实例将无法打开

Jquery onmouseover 改变图像

javascript - 滑出Div,同时滑入另一个Div

javascript - Bootstrap 3——更改导航栏折叠时的悬停样式?

html - 如何在仅使用 css 创建的图像上制作边框

jquery - 如果另一个 div 中的 3 个输入文本字段不为空,如何使用 jQuery 显示隐藏的 div?

html - chrome 中文本框更改的 CSS 设计问题

php - HTML 转为可打印格式

javascript - 如何更改动态 AngularJS ng 类中字形的颜色?