2017-09-19 37 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