2012-11-22 15 views
33

Gibt es eine Möglichkeit, Daten über die trigger Methode von jQuery an ein change Ereignis zu übergeben?Daten mit jQuery Trigger-Ereignis an einen Change-Ereignishandler übergeben?

Das Problem hier ist, dass ein click Ereignis das Upload-Menü auslöst. Sobald das Bild ausgewählt ist, wird das Ereignis change jedoch ausgelöst. Die Daten, die ich an den zweiten Parameter des Triggerereignisses übergeben habe, werden an das click-Ereignis und nicht an das change-Ereignis übergeben. Im folgenden Beispiel ist data nicht definiert.

Trigger Image ändern

$('.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

Warum nicht einfach direkt lösen das Änderungsereignis ausgelöst werden? – PitaJ

+0

Ja, tut es. Nevermind – TaylorMac

Antwort

63

.live() ist veraltet. Verwenden Sie .on() wie folgt. Und change Ereignis soll nicht 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

Ja, es funktioniert. Danke – TaylorMac

+3

Und wenn Sie .live() verwenden müssen, weil das Projekt in einer alten Version von jquery entwickelt wurde und Ihr Chef sagt Ihnen, dass Refactoring keine Option ist ... Traurig, aber wahr. – Maykonn

Verwandte Themen