2012-11-22 83 views
33

有没有办法通过jQuery的trigger方法将数据传递给change事件?使用jQuery触发事件将数据传递给Change事件处理程序?

这里的问题是click事件触发上传菜单。一旦图像被选中,然而,change事件被触发。我传递给触发器事件的第二个参数的数据传递给click事件,而不是传递给change事件。在下面的例子中,data未定义。

触发影像变化

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

事件处理程序

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

为什么不直接触发change事件? – PitaJ

+0

是的。 Nevermind – TaylorMac

回答

63

.live()已被弃用。像这样使用.on()。并且change事件应该被触发,而不是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

是的,它确实有效。谢谢 – TaylorMac

+3

当你需要使用.live()时,因为该项目是在旧版本的jquery中开发的,并且你的老板告诉你重构不是一个选项......可悲但不错。 – Maykonn

相关问题