2010-11-10 15 views
6

Uso il plugin JEditable per la modifica sul posto.Realizzazione di JEditable su nuovi elementi (.live)

Ho una funzione di "impostazione" che chiama .editable() su tutte le classi rilevanti. Il problema è che ho degli elementi appena aggiunti che vorrei rendere modificabili. Ovviamente, appena aggiunto, .editable() non viene mai chiamato su di loro.

In altre parole, sto cercando di ottenere l'effetto della funzione live() di jquery, ma per la funzione editable().

mia soluzione attuale sembra un pò brutto per me (redscribe_button è il pulsante che deve essere cliccato per modificare il testo):

$(".redescribe_button").live("click", function(click_event) { 
    click_event.preventDefault(); 

    $(".editable", $(this).parent().parent()).editable("/temp/", { 
     event: "make_editable", 
     indicator : 'Saving...', 
     tooltip : 'Click to edit...' 
    }); 

    $(".editable", $(this).parent().parent()).trigger('make_editable'); 
}); 

In altre parole, sto solo chiamando .editable ogni volta che la modifica il pulsante viene cliccato.

Qualche idea per una soluzione migliore?

risposta

3

La chiamata modificabile più di una volta su un elemento non ha effetti collaterali negativi, giusto? Quindi, perché non solo rifare il setup ogni volta che qualcosa cambia.

+0

Questo è effettivamente quello che sto facendo, tranne che invece di rifarlo per tutti, lo sto rifacendo (o facendo per la prima volta) sull'elemento appena cliccato. Eppure, sembra piuttosto sbagliato. –

+1

Funziona e mantiene il codice bello e ordinato. Non è rotto, quindi non c'è bisogno di aggiustarlo. –

5

Sono appena arrivato a questa domanda e l'ho risolto in un modo più elegante (IMHO).

$('.jqEdit').live('click',function(event) { 
    event.preventDefault(); 
    $(this).editable('save.php') 
}); 
Problemi correlati