Reputation: 25
i have a search filter, i want, if search result is empty, div element will disappear. But it's not working. I have added snippet, if filter find any record, div element will be disappear. For example; i search "serhat", id=sakla1 disappear, only seem id=sakla2, i tried some method but it's not working, how can i solve this?
$("#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>
Upvotes: 0
Views: 187
Reputation: 2065
Problem : if search result is empty, div element will disappear. But it's not working
Solution :
- Remove
#msj1
hide()
show()
condition fromeach loop
- Apply that condition after ending the
each loop
forli
- Use
$('.panel ul li:visible').length==0
condition forhide()
show()
Please check below code :
$(".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>
Upvotes: 1