如何选择按钮元素旁边的DIV元素

时间:2019-07-13 10:57:54

标签: javascript jquery html css

我有3个方框,每个方框都有一个“单击以获取更多信息”按钮。我想编写尽可能少的JS,因为我不确定我将有多少个潜在的框,因此不想为每个框编写单独的函数。

当我单击第一个框上的按钮时,它将显示第一个框的更多信息。当我单击第二个框上的按钮时,它在第一个框上显示更多信息...

我试图找到一种选择“兄弟”按钮的解决方案。

$("button").click(function() {

  var x = document.getElementById("moreInfo");
  if (x.style.display === "none") {
    x.style.display = "block";
  } else {
    x.style.display = "none";
  };
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section class="prices">
  <div class="row">
    <h2 class="prices-wp">Our Packages</h2>
  </div>
  <div class="row">
    <div class="col span-1-of-3">
      <div class="price-box js--wp-3">
        <div>
          <h3>Lake District</h3>
          <p class="price">£350+ <span>BEST OFFER</span></p>
          <p class="price-description">Perfect for those who know what they want</p>
          <button>Click for more</button>
        </div>
        <div id="moreInfo">
          <ul>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><a href="contactus.php" class="btn-full price-btn-full">Yes please!</a></li>
          </ul>
        </div>
      </div>
    </div>
    <div class="col span-1-of-3">
      <div class="price-box">
        <div>
          <h3>Wales</h3>
          <p class="price">£250+ <span>Discounts available via Facebook</span></p>
          <p class="price-description">Great for people who love sheep</p>
          <button>Click for more</button>
        </div>
        <div id="moreInfo">
          <ul>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><a href="contactus.php" class="btn-ghost price-btn-ghost">Book now</a></li>
          </ul>
        </div>
      </div>
    </div>
    <div class="col span-1-of-3">
      <div class="price-box">
        <div>
          <h3>D of E</h3>
          <p class="price">£150+<span></span></p>
          <p class="price-description">Perfect cadets</p>
          <button>Click for more</button>
        </div>
        <div id="moreInfo">
          <ul>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><a href="contactus.php" class="btn-ghost price-btn-ghost">Book now</a></li>
          </ul>
        </div>
      </div>
    </div>
    <div class="row more-info">
      <p>For more information on each package, click <a href="#" class="packageInfo" target="_blank">here</a>.<br><br>(This could contain a document with more in-depth prices)</p>
    </div>
  </div>
</section>

我希望按钮仅显示相关框的额外信息。

2 个答案:

答案 0 :(得分:1)

属性 id 在文档中必须是唯一的,请改用 class 。您可以通过parent()next()定位特定元素,然后切换 class

$("button").click(function() {
    var x = $(this).parent().next();
    x.toggleClass('moreInfo');
});
.moreInfo{
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section class="prices">
  <div class="row">
    <h2 class="prices-wp">Our Packages</h2>
  </div>
  <div class="row">
    <div class="col span-1-of-3">
      <div class="price-box js--wp-3">
        <div>
          <h3>Lake District</h3>
          <p class="price">£350+ <span>BEST OFFER</span></p>
          <p class="price-description">Perfect for those who know what they want</p>
          <button>Click for more</button>
        </div>
        <div class="moreInfo">
          <ul>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><a href="contactus.php" class="btn-full price-btn-full">Yes please!</a></li>
          </ul>
        </div>
      </div>
    </div>
    <div class="col span-1-of-3">
      <div class="price-box">
        <div>
          <h3>Wales</h3>
          <p class="price">£250+ <span>Discounts available via Facebook</span></p>
          <p class="price-description">Great for people who love sheep</p>
          <button>Click for more</button>
        </div>
        <div class="moreInfo">
          <ul>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><a href="contactus.php" class="btn-ghost price-btn-ghost">Book now</a></li>
          </ul>
        </div>
      </div>
    </div>
    <div class="col span-1-of-3">
      <div class="price-box">
        <div>
          <h3>D of E</h3>
          <p class="price">£150+<span></span></p>
          <p class="price-description">Perfect cadets</p>
          <button>Click for more</button>
        </div>
        <div class="moreInfo">
          <ul>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><i class="far fa-dot-circle icon-small"></i>We do this</li>
            <li><a href="contactus.php" class="btn-ghost price-btn-ghost">Book now</a></li>
          </ul>
        </div>
      </div>
    </div>
    <div class="row more-info">
      <p>For more information on each package, click <a href="#" class="packageInfo" target="_blank">here</a>.<br><br>(This could contain a document with more in-depth prices)</p>
    </div>
  </div>
</section>

答案 1 :(得分:0)

this.parentNode.nextSibling获取moreInfo类div元素。