2012-11-08 83 views
0

我正在使用jQuery構建一個簡單的搜索功能,它將根據用戶輸入的查詢內容篩選項目列表。它不會做任何花哨的算法,只是一個簡單的匹配。jQuery在項目列表中搜索

小提琴這裏:http://jsfiddle.net/T7hF3/

正如你可以看到我有嵌套的列表。計劃是,如果任何列表項匹配,那麼它應該顯示最高父母<li>並隱藏沒有匹配項目的所有其他人。

如果用戶不輸入任何內容,則所有列表項都應該再次顯示!

任何人都可以幫助我指出正確的方向。我試過使用jQuery的每種方法來查找包含查詢的所有項目並顯示它們,但它將它們全部隱藏起來...

+0

是[此接近(http://jsfiddle.net/DG66a/)就夠了嗎? – chridam

回答

3

它不喜歡您使用,這是用於元素,不是文字。我改變它使用過濾器。我也讓它隱藏了每一個元素,而不僅僅是孩子li元素,這樣一切都隱藏了。

現在的工作,但請記住,這是區分大小寫...

Working jsfiddle example

$('form.groups-search').live('submit', function(e) { 
    e.preventDefault(); 
    query = $('input#q').val(); 
    if (query === "") { 
     $('ul.groups-tree *').show(); 
    } else { 
     $('ul.groups-tree *').hide(); 
     $('ul.groups-tree li').filter(function() { 
      return $(this).text().indexOf(query) != -1; 
     }).show().parents().show(); 
    } 
});?