jQuery检查span类并隐藏最近的div

时间:2017-09-19 10:03:19

标签: javascript jquery html

我在弄清楚为什么这个功能无法正常工作时遇到了很多麻烦。我尝试使用.html val trim ! :contains' '.text和其他变体来测试具有特定类的范围内的字符串,但控制台似乎返回然而,对象失败了。任何帮助表示赞赏。

if (jQuery('.price').text() == '') {
  jQuery(this).closest(".box").hide();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="box">
  test content<br>
  <span class="price">$99.99</span>
</div>
<div class="box">
  test content<br>
  <span class="price">$99.99</span>
</div>
<div class="box">
  test content<br>
  <span class="price"></span>
</div>
<div class="box">
  test content<br>
  <span class="price"></span>
</div>
<div class="box">
  test content<br>
  <span class="price">$99.99</span>
</div>

3 个答案:

答案 0 :(得分:3)

您的代码存在的问题是因为您一次从所有 text()元素中检索.price。您需要循环遍历它们并单独检查文本,然后隐藏相关的.box,如下所示:

&#13;
&#13;
$('.price').each(function() {
  if ($(this).text().trim() == '') {
    $(this).closest('.box').hide();
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="box">
  test content
  <br>
  <span class="price">$99.99</span>
</div>
<div class="box">
  test content
  <br>
  <span class="price">$99.99</span>
</div>
<div class="box">
  test content
  <br>
  <span class="price"></span>
</div>
<div class="box">
  test content
  <br>
  <span class="price"></span>
</div>
<div class="box">
  test content
  <br>
  <span class="price">$99.99</span>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

你需要循环每个元素。

$('.price').each( function(index) {
  if ($(this).text() == "") {
    $(this).closest(".box").hide();
  }
});

但您的HTML存在问题。因为类.box

有2个近邻

答案 2 :(得分:-1)

我没有得到您的确切要求。尝试以下代码可能会对您有所帮助。

if (jQuery('.price').text() != '') {
  jQuery('.price').closest(".box").hide();
}