這是我的示例代碼不起作用。這裏有兩個例子答案:Jquery的搜索如預期
「地球多麼圓?」和「紙長方形?」
如果我輸入搜索詞「圓地球」,我希望它顯示「地球是多麼圓?」作爲結果,但它does not。
我想我需要改變查詢,所以它說同等的問題包含「圓」和「地球」。
這是一個簡單的修改嗎?這是來自網站的示例代碼,所以我不知道從哪裏開始不幸。
這是我的示例代碼不起作用。這裏有兩個例子答案:Jquery的搜索如預期
「地球多麼圓?」和「紙長方形?」
如果我輸入搜索詞「圓地球」,我希望它顯示「地球是多麼圓?」作爲結果,但它does not。
我想我需要改變查詢,所以它說同等的問題包含「圓」和「地球」。
這是一個簡單的修改嗎?這是來自網站的示例代碼,所以我不知道從哪裏開始不幸。
$('#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();
}
});
搜索位是完美的,但...我怎麼能將擴展位添加回答案?點擊之前,他們切換。 – 2012-07-30 08:50:25
只需使用您之前使用的相同點擊事件即可。 – Summoner 2012-07-30 08:54:29
對不起,我不太瞭解JS。我試圖添加.find('EM')。slideToggle();我的腳本,使其切換,但它不工作:http://jsfiddle.net/pT6dB/60/ – 2012-07-30 09:08:11
您需要執行的每個詞的搜索,而不是字符串「圓地球」,這不以任何項目的存在:
var words = s.split(' ');
$('#result LI').hide();
$(words).each(function() {
$('#result LI:contains(' + this + ')').show();
});
當然這裏有可想而知的複雜情況;我們所做的一切都是調整腳本以涵蓋更多特定場景。但是這對你的目的可能已經足夠了。
我想你是問「這是一個容易修改嗎?」 答案是NO。 :)
您正在試圖做一個沒有數據庫的全文搜索,但只是jQuery,不要談論更復雜的情況,但至少你需要使用拆分來分割用戶輸入空間的單詞,並檢查他們之一一個。
您要找的是full-text search
在javascript和contains
是不夠的。但是你可以做一些類似於這個問題的答案:text search in javascript?
Try that它還檢查你是否輸入了多於一個單詞,這些單詞在句子中是不連續的。
試試這個http://stackoverflow.com/questions/2416803/jquery-contains-selector-to-search-for-multiple-strings/2417076#2417076 – Dru 2012-07-30 08:45:40