我在弄清楚为什么这个功能无法正常工作时遇到了很多麻烦。我尝试使用.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>
答案 0 :(得分:3)
您的代码存在的问题是因为您一次从所有 text()
元素中检索.price
。您需要循环遍历它们并单独检查文本,然后隐藏相关的.box
,如下所示:
$('.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;
答案 1 :(得分:0)
你需要循环每个元素。
$('.price').each( function(index) {
if ($(this).text() == "") {
$(this).closest(".box").hide();
}
});
但您的HTML存在问题。因为类.box
答案 2 :(得分:-1)
我没有得到您的确切要求。尝试以下代码可能会对您有所帮助。
if (jQuery('.price').text() != '') {
jQuery('.price').closest(".box").hide();
}