2014-03-05 66 views
0

我有以下代碼:jQuery的 - 試圖讓李最接近的

<li> 
    <a href="#" rel="brand">Brand</a> 
    <ul> 
     <li class="fsearch"> 
      <input class="filter-me" type="text" placeholder="Type to search..." /> 
     </li> 
     <li>aaa</li> 
     <li>bbb</li> 
     <li>ccc</li> 
    </ul> 
</li> 

我試圖用一個函數來過濾列表(Jquery filter list without case sensitive)......但我不能得到它的工作。我試過使用next(),find(),close(),...

$('.filter-me').keyup(function(){ 
     filter(this); 
}); 

var filter = function(element) { 

var value = $(element).val().toLowerCase(); 
var $li = $(element).next('li:not(.fsearch)'); 

$li.hide(); 
$li.filter(function() { 
    return $(this).text().toLowerCase().indexOf(value) > -1;}).show(); 
} 

我在做什麼錯?

+2

'$(元素).closest( 'UL')。最接近( '禮')' – adeneo

+0

的.next()只能得到緊接着的兄弟姐妹,試試.siblings()來獲得所有的lis,那麼你也不必排除.fsearch – OJay

回答

1

爲了得到一組比fsearch,從input開始其他該列表中li元素,你先上去包含使用closest輸入的li,然後使用siblings

var $listItems = $(element).closest('li').siblings(); 

然後你在$listItems上使用你的filter邏輯。 (我把它叫做$listItems而不是$li因爲$li僅給出了是一個項目的印象。)

+0

這很好用!我很複雜!謝謝! – user2840318