通过jQuery隐藏Bootstrap选项卡上的空元素
Hide empty element on Bootstrap tab via jQuery
HTML:
<div class="ys-panel ys-tabs">
<div class="panel-heading with-tabs">
<ul class="nav nav-tabs" role="tablist">
<li class="active">
<a data-content-id="id1" href="#">
<i class="ys-icons ys-icons-test1"></i> Tab 1
</a>
</li>
<li><a data-content-id="id2" href="#"><i class="ys-icons ys-icons-test2"></i> Tab 2</a></li>
<li>
<a data-content-id="id3" href="#"><i class="ys-icons ys-icons-test3"></i> Tab 3</a>
</li>
</ul>
</div>
<div class="panel-body">
<div class="tab active" id="id1">
<p>...</p>
</div>
<div class="tab active" id="id2">
<p>...</p>
</div>
<div class="tab active" id="id3">
</div>
</div>
</div>
它的引导选项卡和工作良好。如果任何div没有p
元素,我希望隐藏父级li
JS:
if ($(".tab").length < 0) {
$('.nav-tabs li a').parent().hide();
} else {
}
但它不起作用。我有什么问题?我该如何解决?非常感谢。
我会尝试这样的东西:
// for each tab link
$('.nav-tabs li a').each(function() {
// does it's related div (by content id) not have a p element?
if ($('#' + $(this).data('content-id') + ' > p').length == 0) {
// if not, find the link's parent li element and hide it
$(this).parent('li').hide();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="ys-panel ys-tabs">
<div class="panel-heading with-tabs">
<ul class="nav nav-tabs" role="tablist">
<li class="active">
<a data-content-id="id1" href="#">
<i class="ys-icons ys-icons-test1"></i> Tab 1
</a>
</li>
<li><a data-content-id="id2" href="#"><i class="ys-icons ys-icons-test2"></i> Tab 2</a></li>
<li>
<a data-content-id="id3" href="#"><i class="ys-icons ys-icons-test3"></i> Tab 3</a>
</li>
</ul>
</div>
<div class="panel-body">
<div class="tab active" id="id1">
<p>...</p>
</div>
<div class="tab active" id="id2">
<p>...</p>
</div>
<div class="tab active" id="id3">
</div>
</div>
</div>
你可以这样做:
$(".panel-body .tab:not(:has(p))").each(function() {
alert(this.id)
$('a[data-content-id="' + this.id + '"]').closest("li").hide();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<div class="ys-panel ys-tabs">
<div class="panel-heading with-tabs">
<ul class="nav nav-tabs" role="tablist">
<li class="active">
<a data-content-id="id1" href="#">
<i class="ys-icons ys-icons-test1"></i> Tab 1
</a>
</li>
<li><a data-content-id="id2" href="#"><i class="ys-icons ys-icons-test2"></i> Tab 2</a>
</li>
<li>
<a data-content-id="id3" href="#"><i class="ys-icons ys-icons-test3"></i> Tab 3</a>
</li>
</ul>
</div>
<div class="panel-body">
<div class="tab active" id="id1">
<p>...</p>
</div>
<div class="tab active" id="id2">
<p>...</p>
</div>
<div class="tab active" id="id3">
</div>
</div>
</div>
您需要单独查看每个元素。
使用选择器($(".tab")
),您可以选择类选项卡中的所有元素。在您的示例中,所选元素的长度始终为三(因为您有三个选项卡)。
要对它们进行迭代,请查看.each
函数(请参阅其他答案)。如果元素有任何内容,您可以签入此函数,也可以改进选择器来为您执行此操作(请参见not
过滤器)。
相关文章:
- 根据select选项元素将表单重定向到不同的URL
- WebdriverIO waitForExist()选择元素's选定的选项
- 如果类不是一个选项,如何在使用 jQuery 时控制(避免)嵌套 html 元素的样式
- 向html选择元素添加选项
- 我如何为列出的选项卡元素编写一个Protractor测试,它会检查它是否's是否处于活动状态
- 选项卡式元素上的动画CSS转换
- 只有当Angular从资源对象检索数据时,才选择选项元素
- Angular 指令似乎没有使用元素传入的选项执行
- 使用docment.createElement向元素添加选项
- Angular始终选择选择元素中的第一个选项
- 选择不追加在动态添加的行上的元素选项
- 动态更新 JavaScript 和 PHP 中的选择元素选项
- 创建一个 html 页面,其选择元素选项相同
- 获取所有选定元素选项的文本
- 使用jquery.on()方法处理同一元素(选项标记)的两个脚本之间的冲突
- jQuery:保存已选择的select元素选项
- 禁用基于类的选择元素选项
- 在页面加载时设置select元素选项
- 禁用Firefox中弹出的选择元素选项
- 在Bootstrap元素选项中使用引号中的引号