Другая проблема будет принимать вход от Ваших пользователей. Во многих случаях это упрощено входной обработкой, обеспеченной операционной системой, такой как IME в Windows, который работает прозрачно с общими текстовыми виджетами, но это средство не будет доступно для каждой возможной потребности.
Предполагая, что ваш ul
имеет id
of theList
, это можно сделать следующим образом:
<input type="text" onkeyup="filter(this)" />
<script language="javascript" type="text/javascript">
function filter(element) {
var value = $(element).val();
$("#theList > li").each(function() {
if ($(this).text().search(value) > -1) {
$(this).show();
}
else {
$(this).hide();
}
});
}
</script>
В качестве альтернативы для более сжатой версии, основанной на том, что опубликовал Марек Тихкан, вы можете заменить цикл each () следующим. Не уверен, будет ли это работать лучше или хуже.
$('#theList > li:not(:contains(' + value + '))').hide();
$('#theList > li:contains(' + value + ')').show();
Я сделал это, перебирая все и скрывая несоответствующие ведьмы, и показывал те, которые совпадали.
$('li').hide();
$('li:contains(' + needle + ')').show();
Вы можете использовать ] LiveQuery , который был перенесен с php на jQuery Джоном Ресигом.
Примечание : он зависит от метода Quicksilver score
в методе PHP , который имеет был перенесен на JavaScript с помощью LiquidMetal.score
и joshaven string.score
Пример использования :
$("#text_box_selector").liveUpdate("#list_selector");
Примечание : #list_selector
должен найти элемент, содержащий li
elements
// https://github.com/joshaven/string_score String.prototype.score = function (word, fuzziness ) {'использовать строгое'; // Если строка равна слову, идеальное совпадение. если (это === слово) {возврат 1; } // если это не идеальное совпадение и оно пусто return 0 if (word === "") {return 0; } var runningScore = 0, charScore, finalScore, string = this, lString = string.toLowerCase (), strLength = string.length, lWord = word.toLowerCase (), wordLength = word.length, idxOf, startAt = 0, fuzzies = 1, fuzzyFactor, i; // Кешировать fuzzyFactor для увеличения скорости if (fuzziness) {fuzzyFactor = 1 - fuzziness; } // Пройдемся по слову и сложим оценки. // Происходит дублирование кода для предотвращения проверки нечеткости внутри цикла for if (fuzziness) {for (i = 0; i 0) {scores.push ([оценка, я]);}}); jQuery.each (scores.sort (function (a, b) {return b [0] - a [0];}), функция () {jQuery (строки [это [1]]). show (); }); }}}; $ ("# search"). liveUpdate ("# colors");
- Кошачья книга
- Корзина для собак
- Медвежонок
- Дверь машины
- Другой вариант
- Другое животное