Jquery:如何检查元素在 Bootstrap 折叠手风琴中是否可见
Jquery: how check if an element is visible inside a Boostrap collapsed accordion
我需要检查 Boostrap 折叠手风琴内部元素的可见性。
此元素在某些情况下由 JQuery Validator 设置为 "display:none",我需要根据其显示设置添加一些进一步的控件 - 因为我遇到了一个奇怪的行为我设置的表单中的功能,我正在尝试寻找不同的方法。
显然,问题是折叠的手风琴内部的元素不可见,所以我不知道如何控制 属性。
元素是:
<span id="edit-field-attachments-und-0-upload--2-error" class="error">Campo obbligatorio</span>
所以,如果我尝试使用:
$('.panel span.error:visible')
或等效的选择器,除非打开手风琴,否则我不会得到正确的结果。
知道如何解决这种情况吗?谢谢
您可以试试这个,看看该元素是否作为内联元素存在于 dom 中。如果将 style="display: none;" 添加到 span 标签进行测试,您应该会看到 isVisible 将 return "none",然后您可以添加逻辑来说明 span 是内联的还是 none, 等等..
function isVisible(el) {
return window.getComputedStyle(el[0]).display;
}
console.log(isVisible($('#collapse1 .error')));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<div class="container">
<h2>Collapsible Panel</h2>
<p>Click on the collapsible panel to open and close it.</p>
<div class="panel-group">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse1">Collapsible panel</a>
</h4>
</div>
<div id="collapse1" class="panel-collapse collapse">
<div class="panel-body"><span id="edit-field-attachments-und-0-upload--2-error" class="error">Campo obbligatorio</span></div>
<div class="panel-footer">Panel Footer</div>
</div>
</div>
</div>
</div>
我需要检查 Boostrap 折叠手风琴内部元素的可见性。
此元素在某些情况下由 JQuery Validator 设置为 "display:none",我需要根据其显示设置添加一些进一步的控件 - 因为我遇到了一个奇怪的行为我设置的表单中的功能,我正在尝试寻找不同的方法。
显然,问题是折叠的手风琴内部的元素不可见,所以我不知道如何控制 属性。
元素是:
<span id="edit-field-attachments-und-0-upload--2-error" class="error">Campo obbligatorio</span>
所以,如果我尝试使用:
$('.panel span.error:visible')
或等效的选择器,除非打开手风琴,否则我不会得到正确的结果。
知道如何解决这种情况吗?谢谢
您可以试试这个,看看该元素是否作为内联元素存在于 dom 中。如果将 style="display: none;" 添加到 span 标签进行测试,您应该会看到 isVisible 将 return "none",然后您可以添加逻辑来说明 span 是内联的还是 none, 等等..
function isVisible(el) {
return window.getComputedStyle(el[0]).display;
}
console.log(isVisible($('#collapse1 .error')));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<div class="container">
<h2>Collapsible Panel</h2>
<p>Click on the collapsible panel to open and close it.</p>
<div class="panel-group">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" href="#collapse1">Collapsible panel</a>
</h4>
</div>
<div id="collapse1" class="panel-collapse collapse">
<div class="panel-body"><span id="edit-field-attachments-und-0-upload--2-error" class="error">Campo obbligatorio</span></div>
<div class="panel-footer">Panel Footer</div>
</div>
</div>
</div>
</div>