jQuery: rimuovere un evento .live()

jQuery: rimuovere un evento .live()

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);
});

Torna su