jQuery non Livesearch lavorare durante il caricamento asincrono
-
30-09-2019 - |
Domanda
Ho un LiveSearch e utilizza una lista non ordinata, in questo modo:
<input id="search"/>
<ul id="list>
<li>1</li>
<li>2</li>
</ul>
Ora ho la funzione Livesearch put su questi elementi:
$('#search').liveUpdate('#list').focus();
In un primo momento stavo testando con un elenco statico, ha funzionato come fascino. Ora sto cercando di caricarlo asincrono con le seguenti dichiarazioni:
//$('#list').load('/search/organization');
//$('#list').load('/search/person');
//$('#list').load('/search/debitor');
$('#list').load('/search/accountname');
I dati vengono caricati come al solito, ma ora la ricerca non funziona più. Non sono così abituato ad usare Ajax così forse questo è un problema comune?
Grazie in anticipo,
EDIT:
Quando aggiungo questa riga di codice, o un avviso da qualche altra parte restituisce 1. C'è sempre un solo elemento in ul.
$('#list').load('/search/organization');
var test = jQuery('#list');
alert(test.length);
Ancora nessuna sollution trovato.
Soluzione
Il plugin è in realtà una cache degli elementi <li>
che vengono sostituiti, quindi è necessario l'ex gestore "unbind" e ri-bind di nuovo, in questo modo:
$('#list').load('/search/accountname', function() {
$('#search').unbind('keyup').liveUpdate('#list');
});
il plugin è truccato fino al .keyup()
handler, sei solo Disassocia che e l'aggiunta di una nuova. Per davvero su pulito, si potrebbe aggiungere un .parents('form').unbind('submit')
, ma se si ha qualsiasi altro presentare i gestori sul <form>
, che sarebbe una cattiva idea:)