Задача стоит искать именно с первого введенного символа. А по поводу разделения поиска - на самом деле поиск ведется только по названию из одной таблицы, просто решил не уточнять подробности.
Про индексы почитаю, спасибо.
YemSalat: в комментарии выше я написал, что .wrapper - не общий родитель. Что касается задачи, то она просто выдумана, с сохранением сути: у нас есть много похожих элементов на странице, у каждого элемента есть одинаковый родитель (не общий, а свой у каждого!), и нужно при клике на элемент производить какие-то манипуляции с родителем.
YemSalat: использование .on() еще не означает использование делегирования. Если бы в вашем примере .wrapper был общей оберткой для всех кнопок, тогда да. Но, как я уже сказал, у каждой кнопки своя обертка.
В таком случае у вас отсутствует делегирование, так как навешиваются обработчики на все обертки кнопок, которых может быть много, вместо того, чтобы навешивать его на одного общего родителя.
Добавил в вопрос. В данном случае мы не используем хождение вверх по дереву, зато мы отказываемся от делегирования, навешиваем обработчик в цикле и просто неоправданно усложняем код.
vasIvas: спасибо за ваш ответ. В данном случае вопрос больше исходит из контекста jQuery, коллега утверждает, что примеры, подобные приведенному мной - плохо.