嗨,我有以下html
<li class="item product product-item category">
<div class="product-item-info">
<div class="product details product-item-details">
<strong class="product name product-item-name">
<a class="product-item-link" href="stackexchange.com">content</a>
</strong>
</div>
</div>
</li>
<li class="item product product-item category">
<div class="product-item-info">
<div class="product details product-item-details">
<strong class="product name product-item-name">
<a class="product-item-link" href="stackexchange.com"></a>
</strong>
</div>
</div>
</li>
这里,第二个<li>
是空的,因为在.product-item-link
内部内容是无的。如何隐藏此<li>
?
我需要Javascript或CSS方法来隐藏这一点。我不能说它是第二个<li>
,因为在我的HTML中有太多的<li>
,在这里写作时,我只拿这两个<li>
。
如果您支持主流浏览器,那么您可以使用closest()
方法
document.querySelector(".product-item-link:empty")
.closest(".product-item").style.display = 'none';
document.querySelector(".product-item-link:empty")
.closest(".product-item").style.display = 'none';
ol { background: #ff9999;padding: 20px;}ol li {background: #ffe5e5;padding: 10px;margin-left: 15px;}
<ol>
<li class="item product product-item category">
<div class="product-item-info">
<div class="product details product-item-details">
<strong class="product name product-item-name">
<a class="product-item-link" href="stackexchange.com">content</a>
</strong>
</div>
</div>
</li>
<li class="item product product-item category">
<div class="product-item-info">
<div class="product details product-item-details">
<strong class="product name product-item-name">
<a class="product-item-link" href="stackexchange.com"></a>
</strong>
</div>
</div>
</li>
</ol>
试试这个:-
$("li.item").each(function(){
if ($(this).find('a.product-item-link').text()=="") {
$(this).hide();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<ul id="list">
<li class="item product product-item category">
<div class="product-item-info">
<div class="product details product-item-details">
<strong class="product name product-item-name">
<a class="product-item-link" href="stackexchange.com">content</a>
</strong>
</div>
</div>
</li>
<li class="item product product-item category">
<div class="product-item-info">
<div class="product details product-item-details">
<strong class="product name product-item-name">
<a class="product-item-link" href="stackexchange.com"></a>
</strong>
</div>
</div>
</li>
</ul>
编辑:使用JavaScript
var li = document.getElementById("list").getElementsByTagName("li");
for(i=0;i<li.length;i++) {
var content = li[i].getElementsByTagName('a')[0].innerText;
if (content == "") {
li[i].style.display = "none";
}
}
您应该编写一个JavaScript函数来:
- 获取数组中的所有
<li>
- 在阵列上循环
- 向
<li>
添加不包含值/文本内容的"隐藏"类 - 将"隐藏"类添加到css中,其属性可以隐藏
<li>
(即不透明度(