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.

È stato utile?

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:)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top