2012-07-30 36 views
1

這是我的示例代碼不起作用。這裏有兩個例子答案:Jquery的搜索如預期

「地球多麼圓?」和「紙長方形?」

如果我輸入搜索詞「圓地球」,我希望它顯示「地球是多麼圓?」作爲結果,但它does not。

我想我需要改變查詢,所以它說同等的問題包含「圓」和「地球」。

這是一個簡單的修改嗎?這是來自網站的示例代碼,所以我不知道從哪裏開始不幸。

+0

試試這個http://stackoverflow.com/questions/2416803/jquery-contains-selector-to-search-for-multiple-strings/2417076#2417076 – Dru 2012-07-30 08:45:40

回答

3
$('#search').keyup(function(e) { 
    var s = $(this).val().trim(); 

    // show all results 
    $('#result LI').show(); 

    // split the search into words 
    var keywords = s.split(' '); 

    // loop over the keywords and if it's not in a LI, hide it 
    for(var i=0; i<keywords.length; i++) { 
     $('#result LI:not(:contains('+keywords[i]+'))').hide(); 
    } 
}); 
+0

搜索位是完美的,但...我怎麼能將擴展位添加回答案?點擊之前,他們切換。 – 2012-07-30 08:50:25

+0

只需使用您之前使用的相同點擊事件即可。 – Summoner 2012-07-30 08:54:29

+0

對不起,我不太瞭解JS。我試圖添加.find('EM')。slideToggle();我的腳本,使其切換,但它不工作:http://jsfiddle.net/pT6dB/60/ – 2012-07-30 09:08:11

0

您需要執行的每個詞的搜索,而不是字符串「圓地球」,這不以任何項目的存在:

var words = s.split(' '); 

    $('#result LI').hide(); 

    $(words).each(function() { 
     $('#result LI:contains(' + this + ')').show(); 
    }); 

Demo

當然這裏有可想而知的複雜情況;我們所做的一切都是調整腳本以涵蓋更多特定場景。但是這對你的目的可能已經足夠了。

0

我想你是問「這是一個容易修改嗎?」 答案是NO。 :)

您正在試圖做一個沒有數據庫的全文搜索,但只是jQuery,不要談論更復雜的情況,但至少你需要使用拆分來分割用戶輸入空間的單詞,並檢查他們之一一個。

0

您要找的是full-text search在javascript和contains是不夠的。但是你可以做一些類似於這個問題的答案:text search in javascript?

0

Try that它還檢查你是否輸入了多於一個單詞,這些單詞在句子中是不連續的。