2015-06-21 121 views
0

我正在努力與jQuery的實時搜索。jQuery/Javascript獲取多個元素的類來顯示這個類的元素

首先使用以下代碼進行實時搜索更新。

//live search function 
    function live_search(list) { 
    $("#search") 
     .change(function() { 
     //getting search value 
     var searchtext = $(this).val(); 
     if(searchtext) { 
      //finding If content matches with searck keyword 
      $matches = $(list).find('a:Contains(' + searchtext + ')').parent(); 
      //hiding non matching lists 
      $('li', list).not($matches).slideUp(); 
      //showing matching lists 
      $matches.slideDown(); 

     } else { 
      //if search keyword is empty then display all the lists 
      $(list).find("li").slideDown(200); 
     } 
     return false; 
     }) 
    .keyup(function() { 
     $(this).change(); 
    }); 
    } 

的問題是,我的列表按字母順序和containt一個標題爲每個字母:

<ul class="begrippen_list leftList col-sm-12 col-md-6"> 
    <li class="header a">A</li> 
    <li class="a"> 
     <a href="#">All</a> 
    </li> 
    <li class="a"> 
     <a href="#">Auto</a> 
    </li> 
    <li class="header b">B</li> 
    <li class="b"> 
     <a href="#">Balls</a> 
    </li> 
    <li class="b"> 
     <a href="#">Bus</a> 
    </li> 
</ul> 

現在的問題:當我在輸入型金礦牀,jQuery的只顯示列表 - 項目與「自動」,但我也希望與頭等a(李類)被顯示。當我只輸入帶有類「a」和類「b」的標題時,必須顯示。

我想檢查他們班的所有$匹配,並顯示與$匹配的類li.header可能是解決方案,但不能得到它的工作。

乾杯!

回答

1

您可以遍歷並找到$matches的「標題」元素,並在向上滑動時排除。

var $header = $matches.prevAll('li.header'); 

//hiding non matching lists excluding matches heare 
$('li', list).not($matches).not($header).slideUp(); 
+0

差不多:)現在它還顯示沒有匹配的.headers。我認爲必須檢查頭部是否與比賽相同。 –

+0

@TomTe,嘗試一次'var $ header = $ matches.prevAll('li.header');' – Satpal

+1

太棒了!這工作:) –