这里有一个重要的概念必须注意——当你添加一个事件处理函数以在触发特定事件时执行时,事件处理函数return
的值实际上无处可去,并且什么都没有传递。创建事件侦听器是为了在未来某个未知时间点调用事件处理程序函数,但典型的脚本执行是完全线性的,并且按照脚本中的命令顺序发生 - 所以最好以某种方式定义应用程序的功能只有当某些事件发生时,您才会执行某些类似的操作。
看起来在您上面的问题中,您正在定义一个事件处理程序来侦听最初提交表单的时间,所以我将把它作为启动一切的初始事件。以下是我将如何处理您描述的提交过程:
//wrap the form element in jQuery and cache it so we don't work to re-select it
var $myform = $('#myform');
//specify that we are listening for -when- the form is submit
$myform.on('submit', function(event){
//prevents the form from actually submitting when submit is first clicked
event.preventDefault();
//Simpler image construction
var image = new Image();
document.body.appendChild(image);
//remember to listen for the image's load event before assigning a source
$(image).on('load', function(){
//this function is invoked in the future,
//when the image load event has been fired
//this bit actually submits the form via GET or POST
$myform.submit();
});
//an image's `src` attribute can be set directly via the`src` property
image.src = "http://placekitten.com/320/240";
});
在 JSFiddle 上工作的示例:
http://jsfiddle.net/Admiral/uweLe/
我建议阅读 jQuery 的.on()
方法,以深入了解当前首选的事件绑定方法——这应该会让事情变得更清楚。
http://api.jquery.com/on/
祝你好运!