jQuery livesearch не работает при асинхронной загрузке

StackOverflow https://stackoverflow.com/questions/3548238

  •  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>, это была бы плохая идея :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top