Вы всегда можете кэшировать варианты, которые привыкают несколько раз:
$(function(){
var $A = $('#list').find('a');
$("#descriptionField").bind('keyup',function(e){
var filter = this.value;
if(filter.length > 0)
{
$A.filter(":not(:contains(" + filter + "))").parent().hide();
$A.filter(":contains(" + filter + ")").parent().show();
}
});
});
Я снял мультипликационный slideDown()
и slideUp()
функция требует меньше процессора интенсивной show()
и hide()
. Кроме того, вместо использования jQuery для получения значения ввода, я использовал this.value
, который должен быть немного быстрее.
Вместо того, чтобы использовать псевдо селекторы :not()
и :contains()
вы могли бы использовать filter()
сделать это:
$(function(){
var $A = $('#list').find('a');
$("#descriptionField").bind('keyup',function(e){
var filter = this.value;
if(filter.length > 0)
{
$A.filter(function() {
return ($(this).text().indexOf(filter) === -1)
}).parent().hide();
$A.filter(function() {
return ($(this).text().indexOf(filter) > -1)
}).parent().show();
}
});
});
Вот JSPerf, чтобы показать прирост производительности при использовании .filter()
над :contains()
: http://jsperf.com/jquery-contains-vs-filter
удалить slideUp и slideDown, и добавьте дроссель, чтобы он не запускался в режиме EVERY. –
Это относится к http://codereview.stackexchange.com. – BalusC
Просто интересно, почему это не было перемещено и вместо этого закрыто? – Jasper