jQuery livesearch не работает при асинхронной загрузке
-
30-09-2019 - |
Вопрос
У меня есть живой поиск, и он использует неупорядоченный список, например:
<input id="search"/>
<ul id="list>
<li>1</li>
<li>2</li>
</ul>
Теперь у меня есть функция liveSearch, добавленная к этим элементам:
$('#search').liveUpdate('#list').focus();
Сначала я тестировал статический список, он работал отлично.Теперь я пытаюсь загрузить его асинхронно с помощью следующих операторов:
//$('#list').load('/search/organization');
//$('#list').load('/search/person');
//$('#list').load('/search/debitor');
$('#list').load('/search/accountname');
Данные загружаются как обычно, но поиск больше не работает.Я не привык использовать ajax, так что, может быть, это обычная проблема?
Заранее спасибо,
РЕДАКТИРОВАТЬ:
Когда я добавляю эту строку кода или предупреждаю об этом где-то еще, она возвращает 1.В ul всегда есть только один элемент.
$('#list').load('/search/organization');
var test = jQuery('#list');
alert(test.length);
Решение по-прежнему не найдено.
Решение
Плагин на самом деле имеет кеш <li>
элементы, которые заменяются, поэтому вам нужно «отвязать» прежний обработчик и снова привязать его, вот так:
$('#list').load('/search/accountname', function() {
$('#search').unbind('keyup').liveUpdate('#list');
});
С плагин настроен на .keyup()
обработчик, вы просто отвязываете его и добавляете новый.К Действительно почисти, можешь добавить .parents('form').unbind('submit')
, но если бы они у тебя были другой отправить обработчики на <form>
, это была бы плохая идея :)