Jquery:如何检查一个元素在Boostrap折叠手风琴中是否可见

时间:2017-06-19 19:52:19

标签: jquery twitter-bootstrap bootstrap-accordion

我需要检查Boostrap折叠式手风琴内部元素的可见性。

此元素设置为" display:none"在某些情况下由JQuery Validator,我需要根据其显示设置添加一些进一步的控件 - 因为我已经遇到了一种奇怪的行为,其功能在我设置的形式中,我尝试过寻找不同的方法。

遗憾的是,问题在于折叠的手风琴内部的元素是不可见的,所以我不知道如何控制该属性。

元素是:

<span id="edit-field-attachments-und-0-upload--2-error" class="error">Campo obbligatorio</span>

所以,如果我尝试使用类似的东西:

$('.panel span.error:visible')

或等效的选择器,除非打开手风琴,否则我得不到正确的结果。

任何想法如何解决这种情况?感谢

1 个答案:

答案 0 :(得分:1)

您可以尝试这样做,以查看dom中的元素是否作为内联元素存在。如果你添加style =“display:none;”要测试的span标记,您应该看到isVisible将返回“none”,然后您可以添加逻辑来说明span是内联还是无,等等。

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>