javascript - 如果类别下没有任何子类别,则应隐藏该类别

标签 javascript jquery

我正在研究类别和子类别结构,但陷入困境,我希望当我们删除所有子类别时,它们各自的类别也应该被删除。意思是说类别将只显示该类别有一些子类别。

有什么建议吗?

提前致谢

$('#col-result-1').click(function(e) {
    $('#result-1').fadeOut("slow");
});
$('#col-result-2').click(function(e) {
    $('#result-2').fadeOut("slow");
});

$('#col-result-3').click(function(e) {
    $('#result-3').fadeOut("slow");
});

$('#col-result-4').click(function(e) {
    $('#result-4').fadeOut("slow");
});

$('#col-result-5').click(function(e) {
    $('#result-5').fadeOut("slow");
});

$('#col-result-6').click(function(e) {
    $('#result-6').fadeOut("slow");
});

$('#col-result-7').click(function(e) {
    $('#result-7').fadeOut("slow");
});
.result{
    background: #f3f3f3;
    padding: 0 15px;
    margin:10px 0;
}
.result h3 {
    float: left;
    color: #127498;
    font-size: 16px;

}
.result .close-result {
   float: right;
    cursor; pointer;
}
.clear{ clear:both}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
           <div>
		     <h2>Category Name</h2>
                 
		     <div class="result" id="result-1">
                 <h3>Sub Category Name</h3>
                 <p class="close-result" id="col-result-1">Close</p>
                 <div class="clear"></div>
		     </div>
                 
		     <div class="result" id="result-2">
                 <h3>Sub Category Name</h3>
                 <p class="close-result" id="col-result-2">Close</p>
                 <div class="clear"></div>
		     </div>
		     
		     <div class="result" id="result-3">
                 <h3>Sub Category Name</h3>
                 <p class="close-result" id="col-result-3">Close</p>
                 <div class="clear"></div>
		     </div>

		  </div>
		   
		   <div>
		         <h2>Category Name</h2>
               
		          <div class="result" id="result-4">
                     <h3>Sub Category Name</h3>
                     <p class="close-result" id="col-result-4">Close</p>
                     <div class="clear"></div>
                  </div>
		  

		  		  <div class="result" id="result-5">
                     <h3>Sub Category Name</h3>
                     <p class="close-result" id="col-result-5">Close</p>
                     <div class="clear"></div>
                  </div>

		   </div>
		   
		   <div>
		         <h2>Category Name</h2>
               <div class="result" id="result-6">
                   <h3>Sub Category Name</h3>
                   <p class="close-result" id="col-result-6">Close</p>
                   <div class="clear"></div>
               </div>
		   </div>

最佳答案

当单击删除按钮时,向上导航到整个父容器并查看它是否还有任何剩余的.result div。如果没有,则删除父容器。

$('.close-result').click(function() {
  $(this).closest('.result').fadeOut('slow');
  if ($(this).closest('div:has(h2)').find('.result:visible').length == 1) {
    $(this).closest('div:has(h2)').remove();
  }
});

$('.close-result').click(function() {
  $(this).closest('.result').fadeOut('slow');
  if ($(this).closest('div:has(h2)').find('.result:visible').length == 1) {
    $(this).closest('div:has(h2)').remove();
  }
});
.result {
  background: #f3f3f3;
  padding: 0 15px;
  margin: 10px 0;
}
.result h3 {
  float: left;
  color: #127498;
  font-size: 16px;
}
.result .close-result {
  float: right;
  cursor;
  pointer;
}
.clear {
  clear: both
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<div>
  <h2>Category Name</h2>

  <div class="result" id="result-1">
    <h3>Sub Category Name</h3>
    <p class="close-result" id="col-result-1">Close</p>
    <div class="clear"></div>
  </div>

  <div class="result" id="result-2">
    <h3>Sub Category Name</h3>
    <p class="close-result" id="col-result-2">Close</p>
    <div class="clear"></div>
  </div>

  <div class="result" id="result-3">
    <h3>Sub Category Name</h3>
    <p class="close-result" id="col-result-3">Close</p>
    <div class="clear"></div>
  </div>

</div>

<div>
  <h2>Category Name</h2>

  <div class="result" id="result-4">
    <h3>Sub Category Name</h3>
    <p class="close-result" id="col-result-4">Close</p>
    <div class="clear"></div>
  </div>


  <div class="result" id="result-5">
    <h3>Sub Category Name</h3>
    <p class="close-result" id="col-result-5">Close</p>
    <div class="clear"></div>
  </div>

</div>

<div>
  <h2>Category Name</h2>
  <div class="result" id="result-6">
    <h3>Sub Category Name</h3>
    <p class="close-result" id="col-result-6">Close</p>
    <div class="clear"></div>
  </div>
</div>

我重构了您的 JavaScript 点击处理以使用类而不是 ID,因为这大大减少了代码。

关于javascript - 如果类别下没有任何子类别,则应隐藏该类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30755238/

相关文章:

javascript - IE8 中的访问被拒绝错误消息

javascript - Cookie 设置不正确

javascript - 显示 json 文件中的数据

JavaScript:检测来自 iframe 的源更改

javascript - 委托(delegate)选择器上的 jQuery - 不支持我的选择器

javascript - jQuery – 在 ('click' 上)附加似乎不起作用

javascript - JQuery中的战斗系统

javascript - node.js/将缓冲区写入文件

javascript - 如何在 Express 中更新动态 URL 中的内容?

Javascript 不和谐机器人在句子中提及用户