Div元素为空,无法在Jquery中工作

时间:2018-09-26 09:21:38

标签: jquery

我想要一个搜索过滤器,如果搜索结果为空,则div元素将消失。但这不起作用。我添加了代码段,如果过滤器找到任何记录,则div元素将消失。例如;我搜索“ serhat”,id = sakla1消失了,只出现了id = sakla2,我尝试了一些方法,但是它不起作用,我该如何解决呢?

$("#msj1").hide();
$("#msj2").hide();


$(".quick_search_input").keyup(function() {

  var quick_search_input_val = $(".quick_search_input").val().toLowerCase();
  $(".panel ul li").each(function(index) {
    var element_val = $(this).text();
    if (element_val.toLowerCase().indexOf(quick_search_input_val) >= 0) {
      $(this).show();
      $("#msj1").hide();

      $('#baslik1').show();
      // $('#baslik2').show();

    } else {
      $(this).hide();
      if ($('.panel ul li:visible').length == 0) {
        $("#msj1").show();
        $("#msj2").show();

      } else {
        $("#msj1").hide();
        $("#msj2").hide();
      }

      // $("#asit").hide();
      // $("#isit").hide();
      // if (!$.trim($('div#ilk').val())) {
      // 	$('#baslik1').hide();
      // }
      // if (!$.trim($('div#ikinci').val())) {
      // 	$('#baslik2').hide();
      // }
    }


    // if (!$.trim( $('#ilk').html() ).length ) {
    // 	$("#msj1").show();
    // }else{
    // 	$("#msj1").hide();
    // }


    // if (!$.trim($('div#ilk').val())) {
    // 	$('#baslik1').html("Kayıt yok")
    // }
    // else{
    // 	$('#baslik1').html("Ana Site İçerik Tip")
    // }

    // if (!$.trim($('.quick_search_input').val())) {
    // 	$('#baslik1').show();
    // }

    // if (!$.trim($('div#ikinci').val())) {
    // 	$('#baslik2').hide();
    // 	$('#ikinci').hide();
    // }

    // if (!$.trim($('.quick_search_input').val())) {
    // 	$('#baslik2').show();
    // 	$('#ikinci').show();
    // }

  }); // Elementler döngüye alınıyor -- Bitiş
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-group has-feedback">
  <input type="text" class="form-control quick_search_input" placeholder="BUL">
  <div class="form-control-feedback">
    <i class="icon-search4 text-size-base"></i>
  </div>
</div>


<div class="panel-group accordion-sortable content-group-lg" id="accordion-controls" style="margin-top:0px">
  <div id="sakla1">
    <div class="panel" id="baslik1">
      <div class="panel-heading bg-blue-800" id="asit">
        <h6 class="panel-title">
          <a data-toggle="collapse" data-parent="#accordion-controls" href="#accordion-controls-group1">Ana Site
													İçerik Tip</a>
        </h6>
        <div class="heading-elements">
          <ul class="icons-list">
            <li>
              <a data-action="reload"></a>
            </li>
          </ul>
        </div>
      </div>
      <div id="accordion-controls-group1" class="panel-collapse collapse in">
        <div class="panel-body" id="ilk">
          <div id="msj1">Gösterilecek kayıt bulunamadı.</div>
          <div class="tree-default" id="agac1">
            <ul>
              <li class="folder expanded">Haberler
                <ul>
                  <li class="expanded">Ana Sayfa Haberleri
                    <ul>
                      <li class="active focused">Öne Çıkan Haber</li>
                      <li class="selected">Ana Sayfa Diğer</li>
                    </ul>
                  </li>
                  <li>İkinci derece haberler
                    <ul>
                      <li>İlk Kırılım</li>
                      <li>İkinci Derece Kırılım</li>
                    </ul>
                  </li>
                </ul>
              </li>
              <li class="has-tooltip" title="Burası Önemli!">Mouse Over ToolTipi</li>
              <li class="folder">Duyurular
                <ul>
                  <li>Ana Sayfa Duyurular</li>
                  <li>Diğer Duyurular</li>
                </ul>
              </li>
              <li>Bilgi</li>
              <li>Foto Galeri
                <ul>
                  <li>Ana Sayfa Galeri</li>
                  <li>Aiğer Galeriler
                    <ul>
                      <li>Kırılım 1</li>
                      <li>Kırılım 2</li>
                      <li>Kırılım 3</li>
                      <li>Kırılım 4</li>
                    </ul>
                  </li>
                </ul>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </div>
  </div>
  <!-- buraya da içerik ekleyip dene, boşsa mavi başlıklar da gitsin, eğer iç site içerik yoksa ona göre if yaz -->
  <div id="sakla2">
    <div class="panel" id="baslik2">
      <div class="panel-heading bg-blue-800" id="isit">
        <h6 class="panel-title">
          <a class="collapsed" data-toggle="collapse" data-parent="#accordion-controls" href="#accordion-controls-group2">İç
													Site İçerik Tip</a>
        </h6>
        <div class="heading-elements">
          <ul class="icons-list">
            <li>
              <a data-action="reload"></a>
            </li>
          </ul>
        </div>
      </div>
      <div id="accordion-controls-group2" class="panel-collapse collapse in">
        <div class="panel-body" id="ikinci">
          <div id="msj2">Gösterilecek kayıt bulunamadı.</div>
          <div class="tree-default">
            <ul>
              <li class="folder expanded">serhat
                <ul>
                  <li class="expanded">halil
                    <ul>
                      <li class="active focused">silsüpür</li>
                      <li class="selected">Ana Sayfa Diğer</li>
                    </ul>
                  </li>
                  <li>fenerbahçe
                    <ul>
                      <li>İlk Kırılım</li>
                      <li>İkinci Derece Kırılım</li>
                    </ul>
                  </li>
                </ul>
              </li>
              <li class="has-tooltip" title="Burası Önemli!">Mouse Over ToolTipi</li>
              <li class="folder">Duyurular
                <ul>
                  <li>Ana Sayfa Duyurular</li>
                  <li>Diğer Duyurular</li>
                </ul>
              </li>
              <li>Bilgi</li>
              <li>Foto Galeri
                <ul>
                  <li>Ana Sayfa Galeri</li>
                  <li>Aiğer Galeriler
                    <ul>
                      <li>Kırılım 1</li>
                      <li>Kırılım 2</li>
                      <li>Kırılım 3</li>
                      <li>Kırılım 4</li>
                    </ul>
                  </li>
                </ul>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

1 个答案:

答案 0 :(得分:1)

问题:如果搜索结果为空,则div元素将消失。但这不起作用

  

解决方案:

     
      
  1. #msj1删除hide() show() each loop条件
  2.   
  3. each loop结束li后应用该条件
  4.   
  5. $('.panel ul li:visible').length==0 hide()使用show()条件
  6.   

请检查以下代码:

$(".quick_search_input").keyup(function () {
    var quick_search_input_val = $(".quick_search_input").val().toLowerCase();
    $(".panel ul li").each(function (index) {
        var element_val = $(this).text();
        if (element_val.toLowerCase().indexOf(quick_search_input_val) >= 0) {
            $(this).show();
        } else {
            $(this).hide();
        }
    });
    if($('.panel ul li:visible').length==0)
        $("#msj1").show();
    else
        $("#msj1").hide();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="panel">
    <input type="text" class="quick_search_input" placeholder="Search something" />
    <div class="panel-body" id="ilk">
        <div id="msj1" style="display:none">Kayıt yok</div>
        <div class="tree-default" id="agac1">
            <ul>
                <li>India</li>
                <li>Ok, tata</li>
                <li>ipsim</li>
                <li>cool</li>
                <li>Your answer</li>
            </ul>
        </div>
    </div>
</div>