jQuery livesearch не работает при асинхронной загрузке - PullRequest
0 голосов
/ 23 августа 2010

У меня есть livesearch, и он использует неупорядоченный список, например:

<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, так что, может быть, это обычная проблема?

Заранее спасибо,

EDIT:

Когда я добавляю эту строку кода или предупреждаю ее где-то еще, она возвращает 1. Всегда есть только один элемент в ul.

$('#list').load('/search/organization');
var test = jQuery('#list');
alert(test.length);

Раствор до сих пор не найден.

1 Ответ

0 голосов
/ 23 августа 2010

Плагин на самом деле имеет кеш из <li> элементов, которые заменяются, поэтому вам нужно «отсоединить» прежний обработчик и снова связать его снова, как это:

$('#list').load('/search/accountname', function() {
  $('#search').unbind('keyup').liveUpdate('#list');
});

Так как плагин подключен к обработчику .keyup(), вы просто отменяете привязку и добавляете новый.К действительно очистке, вы можете добавить .parents('form').unbind('submit'), но если у вас есть другие обработчики отправки на <form>, это было бы плохой идеей:)

...