jQuery: rimuovere un evento .live()
Come rimuovere l'evento .live() di jQuery subito dopo la sua esecuzione.
Immaginiamo di dover usare il metodo .live() una sola volta su un elemento generato via AJAX e quindi di dover rimuovere l'evento dopo il primo clic. Un problema noto di jQuery è che il metodo .die() non funziona all'interno del metodo .live(). Occorre trovare un'altra soluzione.
Abbiamo il seguente codice che genera un elemento dinamicamente via AJAX:
$('#live').on('click', function() {
$.ajax({
url: '/echo/html/',
type: 'POST',
dataType: 'html',
data: {
html: '<div id="output">Test</div>',
delay: 1
},
success: function(html) {
$('#output').remove();
$(html).appendTo('body');
}
});
});
Possiamo usare .unbind() o .off() per rimuovere l'evento:
$('#output').live('click', function(event) {
alert('Live');
$(this).unbind(event);
});