2017-09-19 40 views
0

我在查找为什么此功能无法正常工作时遇到了一些问题。我曾尝试使用.htmlvaltrim!:contains' '.text和其他变体来测试特定类的跨度内的字符串,但控制台似乎正确返回对象,但失败。任何帮助表示赞赏。jQuery检查跨度类和隐藏最接近的div

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

与HTML分享你的工作代码 –

+0

是的,它不会工作,因为你没有HTML。 – Keith

+1

你已经告诉我们它不起作用,但没有说你实际上想要做什么,或者向我们展示了足够的代码来解决任何问题 –

回答

3

与您的代码的问题是,因为你在检索一旦text()所有.price元素。你,而不是需要通过他们循环,并逐个检查文本,然后隐藏相关.box,像这样:

$('.price').each(function() { 
 
    if ($(this).text().trim() == '') { 
 
    $(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

感谢你!惊人的:D你最好的谢谢谢谢谢谢你! – brigitte18

-1

我没有得到你的确切要求。尝试下面的代码可能会帮助你。

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

以下添加了一个答案,这将隐藏所有列表,我只需要没有显示价格的列表。这就是为什么即时通讯试图检查所有跨度有类.price,检查它是否为空,然后用.box类隐藏该特定跨度最接近的分隔符,以隐藏它显示 – brigitte18

+0

https://jsfiddle.net/qajLjmkd/1/ – brigitte18

0

你需要循环真正的每个元素。

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

但是你的HTML有问题。因为这里有两个近邻.box