【问题标题】:Show result in collapse jQuery在折叠 jQuery 中显示结果
【发布时间】:2018-06-25 04:47:20
【问题描述】:

我有我的 HTML,它是一个包含几个面板的手风琴。我已经包含一个搜索框来搜索特定的面板。我能够搜索并找到结果。我很难展示崩溃的结果。最初,所有面板都处于折叠状态,搜索结果后,它应该处于(折叠状态)- 不仅显示面板标题,还显示完整内容。

我的 HTML:-

<div class="container" 
 id="page_container">
   <div id="accordion_search_bar_container">
  <input type="search" 
     id="accordion_search_bar" 
     placeholder="Search"/>
  </div>
  <div class="panel-group" 
   id="accordion" 
   role="tablist" 
   aria-multiselectable="true">
    <div class="panel panel-success" 
     id="collapseOne_container">
      <div class="panel-heading" 
       role="tab" 
       id="headingOne">
    <h4 class="panel-title">
      <a role="button" 
         data-toggle="collapse" 
         data-parent="#accordion" 
         href="#collapseOne" 
         aria-expanded="true" 
         aria-controls="collapseOne">
        One
      </a>
    </h4>
  </div>
  <div id="collapseOne" 
       class="panel-collapse collapse" 
       role="tabpanel" 
       aria-labelledby="headingOne">
    <div class="panel-body">
      <p>Pellentesque convallis dolor</p>
      <p>Enim at tincidunt magna dapibus vitae</p>
    </div>
  </div>
</div>
<div class="panel panel-primary" 
     id="collapseTwo_Container">
  <div class="panel-heading" 
       role="tab" 
       id="headingTwo">
    <h4 class="panel-title">
      <a class="collapsed" 
         role="button" 
         data-toggle="collapse" 
         data-parent="#accordion" 
         href="#collapseTwo" 
         aria-expanded="false" 
         aria-controls="collapseTwo">
        Two
      </a>
    </h4>
  </div>
  <div id="collapseTwo" 
       class="panel-collapse collapse" 
       role="tabpanel" 
       aria-labelledby="headingTwo">
    <div class="panel-body">
      <p>Vestibulum in laoreet nisi</p>
      <p>Sit amet placerat massa</p>
    </div>
  </div>
</div>
<div class="panel panel-danger" 
     id="collapseThree_Container">
  <div class="panel-heading" 
       role="tab" 
       id="headingThree">
    <h4 class="panel-title">
      <a class="collapsed" 
         role="button" 
         data-toggle="collapse" 
         data-parent="#accordion" 
         href="#collapseThree" 
         aria-expanded="false" 
         aria-controls="collapseThree">
        Three
      </a>
    </h4>
  </div>
  <div id="collapseThree" 
       class="panel-collapse collapse" 
       role="tabpanel" 
       aria-labelledby="headingThree">
        <div class="panel-body">
           <p>Curabitur sem eros tempor sit</p>
           <p>Amet nunc eget, gravida mollis</p>
        </div>
           </div>
        </div>
      </div>
   </div>

我的 jQuery 搜索是

(function(){
    var searchTerm, panelContainerId;
    $.expr[':'].containsCaseInsensitive = function (n, i, m) {
    return jQuery(n).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 
    0;
 };

 $('#accordion_search_bar').on('change keyup paste click', function () {
   searchTerm = $(this).val();
   $('#accordion > .panel').each(function () {
    panelContainerId = '#' + $(this).attr('id');
    $(panelContainerId + ':not(:containsCaseInsensitive(' + searchTerm + 
   '))').hide();
  $(panelContainerId + ':containsCaseInsensitive(' + searchTerm + 
  ')').show();
   });
  });
  }());

有了搜索结果,我应该给出折叠面板视图。

显示()。崩溃;

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 你用bootstrap还是什么的?
  • 请也发布您的 CSS。 runnable 代码将是最好的。
  • 这是我的 CSS #accordion_search_bar_container { position: relative; &:after { 内容: '\e003'; font-family:字形半身人;宽度:18px;高度:18px;位置:绝对;右:10px;底部:10px; } #accordion_search_bar { 显示:块;边距:10px 自动;宽度:100%;填充:7px 10px;边框:1px 实心 $grey;边框半径:25px;大纲:0; } .panel-title { 一个 { 显示:块; }

标签: javascript jquery html css jquery-ui


【解决方案1】:

@Indu Velayutham,

在初始级别,所有面板都处于折叠模式。所以,$(".panel-collapse").css("display","none") 有页面加载,

现在,当您尝试搜索时,您的搜索框中有一些价值,[即标题搜索已经在您的情况下工作]

因此,相应地设置逻辑,如果找到标题,则将 display:none css 切换为 display:block,以便可搜索面板中的所有内容都可见。

(仅供参考,这里没有给出用户使用引导程序还是任何其他js的规范。所以我只是根据基本的jquery基础给出我的答案:))

试一试,

(function(){
    $(".panel-collapse").css("display","none");
    var searchTerm, panelContainerId;
    $.expr[':'].containsCaseInsensitive = function (n, i, m) {
    return jQuery(n).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 
    0;
 };

 $('#accordion_search_bar').on('change keyup paste click', function () {
   searchTerm = $(this).val();
  //
   $('#accordion > .panel').each(function () {
    panelContainerId = '#' + $(this).attr('id');
   
    if(searchTerm != "")
    {
      $(this).find(".panel-collapse").css("display","block");
    }
    else{
      $(this).find(".panel-collapse").css("display","none");
    }
    $(panelContainerId + ':not(:containsCaseInsensitive(' + searchTerm + 
   '))').hide();
     $(panelContainerId + ':containsCaseInsensitive(' + searchTerm + 
    ')').show();
   });
  });
  }());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container" 
 id="page_container">
   <div id="accordion_search_bar_container">
  <input type="search" 
     id="accordion_search_bar" 
     placeholder="Search"/>
  </div>
  <div class="panel-group" 
   id="accordion" 
   role="tablist" 
   aria-multiselectable="true">
    <div class="panel panel-success" 
     id="collapseOne_container">
      <div class="panel-heading" 
       role="tab" 
       id="headingOne">
    <h4 class="panel-title">
      <a role="button" 
         data-toggle="collapse" 
         data-parent="#accordion" 
         href="#collapseOne" 
         aria-expanded="true" 
         aria-controls="collapseOne">
        One
      </a>
    </h4>
  </div>
  <div id="collapseOne" 
       class="panel-collapse collapse" 
       role="tabpanel" 
       aria-labelledby="headingOne">
    <div class="panel-body">
      <p>Pellentesque convallis dolor</p>
      <p>Enim at tincidunt magna dapibus vitae</p>
    </div>
  </div>
</div>
<div class="panel panel-primary" 
     id="collapseTwo_Container">
  <div class="panel-heading" 
       role="tab" 
       id="headingTwo">
    <h4 class="panel-title">
      <a class="collapsed" 
         role="button" 
         data-toggle="collapse" 
         data-parent="#accordion" 
         href="#collapseTwo" 
         aria-expanded="false" 
         aria-controls="collapseTwo">
        Two
      </a>
    </h4>
  </div>
  <div id="collapseTwo" 
       class="panel-collapse collapse" 
       role="tabpanel" 
       aria-labelledby="headingTwo">
    <div class="panel-body">
      <p>Vestibulum in laoreet nisi</p>
      <p>Sit amet placerat massa</p>
    </div>
  </div>
</div>
<div class="panel panel-danger" 
     id="collapseThree_Container">
  <div class="panel-heading" 
       role="tab" 
       id="headingThree">
    <h4 class="panel-title">
      <a class="collapsed" 
         role="button" 
         data-toggle="collapse" 
         data-parent="#accordion" 
         href="#collapseThree" 
         aria-expanded="false" 
         aria-controls="collapseThree">
        Three
      </a>
    </h4>
  </div>
  <div id="collapseThree" 
       class="panel-collapse collapse" 
       role="tabpanel" 
       aria-labelledby="headingThree">
        <div class="panel-body">
           <p>Curabitur sem eros tempor sit</p>
           <p>Amet nunc eget, gravida mollis</p>
        </div>
           </div>
        </div>
      </div>
   </div>

让我知道这个案例适合你吗?

【讨论】:

  • 你能解释一下你做了什么吗?
  • 谢谢。我会尝试执行这个。这是引导程序。
  • 然后它的工作也尝试一下,如果您需要任何帮助,请告诉我:)
  • 很抱歉,它工作正常。非常感谢你。
  • 嗨 Priyal,但问题是在此搜索功能之后无法手动打开或折叠任何这些面板。
【解决方案2】:

这样试试

(function(){
    var searchTerm, panelContainerId;
    $.expr[':'].containsCaseInsensitive = function (n, i, m) {
    return jQuery(n).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 
    0;
 };

 $('#accordion_search_bar').on('change keyup paste click', function () {

   searchTerm = $(this).val();
   var textboxval =$("#accordion_search_bar").val();
   $('#accordion > .panel').each(function () {
    debugger;
    panelContainerId = '#' + $(this).attr('id');
    var BodyId=panelContainerId.split('_')[0];
    $(panelContainerId + ':not(:containsCaseInsensitive(' + searchTerm + 
   '))').hide();
  $(panelContainerId + ':containsCaseInsensitive(' + searchTerm + 
  ')').show();
  if(textboxval.length > 2){
  $(BodyId).css('display','block');
  }
  else{
  $(BodyId).css('display','none');
  }
   });
  });
  }());
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div class="container" 
 id="page_container">
   <div id="accordion_search_bar_container">
  <input type="search" class="form-control"
     id="accordion_search_bar" 
     placeholder="Search"/>
  </div>
  <div class="panel-group" 
   id="accordion" 
   role="tablist" 
   aria-multiselectable="true">
    <div class="panel panel-success" 
     id="collapseOne_container">
      <div class="panel-heading" 
       role="tab" 
       id="headingOne">
    <h4 class="panel-title">
      <a role="button" 
         data-toggle="collapse" 
         data-parent="#accordion" 
         href="#collapseOne" 
         aria-expanded="true" 
         aria-controls="collapseOne">
        One
      </a>
    </h4>
  </div>
  <div id="collapseOne" 
       class="panel-collapse collapse" 
       role="tabpanel" 
       aria-labelledby="headingOne">
    <div class="panel-body">
      <p>Pellentesque convallis dolor</p>
      <p>Enim at tincidunt magna dapibus vitae</p>
    </div>
  </div>
</div>
<div class="panel panel-primary" 
     id="collapseTwo_Container">
  <div class="panel-heading" 
       role="tab" 
       id="headingTwo">
    <h4 class="panel-title">
      <a class="collapsed" 
         role="button" 
         data-toggle="collapse" 
         data-parent="#accordion" 
         href="#collapseTwo" 
         aria-expanded="false" 
         aria-controls="collapseTwo">
        Two
      </a>
    </h4>
  </div>
  <div id="collapseTwo" 
       class="panel-collapse collapse" 
       role="tabpanel" 
       aria-labelledby="headingTwo">
    <div class="panel-body">
      <p>Vestibulum in laoreet nisi</p>
      <p>Sit amet placerat massa</p>
    </div>
  </div>
</div>
<div class="panel panel-danger" 
     id="collapseThree_Container">
  <div class="panel-heading" 
       role="tab" 
       id="headingThree">
    <h4 class="panel-title">
      <a class="collapsed" 
         role="button" 
         data-toggle="collapse" 
         data-parent="#accordion" 
         href="#collapseThree" 
         aria-expanded="false" 
         aria-controls="collapseThree">
        Three
      </a>
    </h4>
  </div>
  <div id="collapseThree" 
       class="panel-collapse collapse" 
       role="tabpanel" 
       aria-labelledby="headingThree">
        <div class="panel-body">
           <p>Curabitur sem eros tempor sit</p>
           <p>Amet nunc eget, gravida mollis</p>
        </div>
           </div>
        </div>
      </div>
   </div>

【讨论】:

  • 感谢您的评论。我会尝试执行这段代码
猜你喜欢
  • 2011-12-06
  • 1970-01-01
  • 2013-06-29
  • 1970-01-01
  • 2012-08-17
  • 1970-01-01
  • 2017-08-06
  • 2012-01-21
  • 1970-01-01
相关资源
最近更新 更多