2012-11-22 8 views
33

Esiste un modo per trasferire i dati a un evento change tramite il metodo trigger di jQuery?Passare i dati utilizzando l'evento jQuery Trigger a un gestore eventi Change?

Il problema è che un evento click attiva il menu di caricamento. Una volta selezionata l'immagine, viene comunque generato l'evento change. I dati che ho passato nel secondo parametro dell'evento trigger sono passati all'evento click, non all'evento change. Nell'esempio seguente, data non è definito.

trigger immagine Cambiare

$('.change_main_image').live('click', function() { 
    $('input[name=photo].change_uploader').trigger('click', ["some string"]); 
}); 

Event Handler

$('input[name=photo].change_uploader').live('change', function (e, data) { 
    alert(data); // undefined 
    //canvas resize and upload script 
}); 
+0

Perché non attivano direttamente l'evento di modifica? – PitaJ

+0

Sì, sì. Nevermind – TaylorMac

risposta

63

.live() è deprecato. Usa .on() in questo modo. E change evento dovrebbe essere attivato, non click

$('.change_main_image').on('click', function() { 
    $('input[name=photo].change_uploader').trigger('change', [{somedata:true}]); 
}); 


$('input[name=photo].change_uploader').on('change', function (e, data) { 
    alert(data.somedata); 
    //canvas resize and upload script 
}); 
+1

Sì, funziona. grazie – TaylorMac

+3

E quando hai bisogno di usare .live() perché il progetto è stato sviluppato in una vecchia versione di jquery e il tuo capo ti dice che il refactoring non è un'opzione ... Triste ma vero. – Maykonn

Problemi correlati