如何等待,直到图像加载在jquery
How to wait until image is loaded in jquery
我有这个例子,当我的表单提交时,我必须加载一个图像文件,直到图像加载到return true
(在本例中是提交表单)
。
$('#myform').submit(function(){
var image=document.createElement('image')
var src=document.createAttribute('src')
image.value="http://example.com/image.jpg"
image.setAttributeNode(src);
document.body.appendChild(image);
})
这里,如果我return true
表单将被提交(图像不会加载),如果false
它不会(图像将加载,但表单不会提交)。如何使代码在加载图像后返回true
这里必须注意一个重要的概念—当您添加一个事件处理程序函数以在触发特定事件时执行时,事件处理程序函数return
s的值实际上不存在,而是传递给任何东西。事件监听器的创建是为了在未来的未知点调用事件处理函数,但是典型的脚本执行是完全线性的,并且按照脚本中命令的顺序发生——因此最好以一种方式定义应用程序的功能,即仅在某些事件发生时执行某些操作。
看起来在上面的问题中,您定义了一个事件处理程序来侦听表单最初提交的时间,所以我将把它作为启动一切的初始事件。以下是我将如何处理你所描述的提交过程:
//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()
方法,以获得对当前首选的事件绑定方法的一些见解-这应该会澄清一些事情。
祝你好运!
您可以在图像上使用onload
或jquery load
事件,并在回调时提交表单。然后,如果你想等待更长的时间,你也可以在回调中添加超时。
类似:
$('#myform .submitButton').click(function(e){
e.preventDefault();
var image=document.createElement('image');
$(image).load(function(){
//Submits form immediately after image loaded.
$('#myForm').submit();
// Submits form 1 second after image has loaded
setTimeout(function(){ $('#myForm').submit(); }, 1000);
});
var src=document.createAttribute('src');
image.value="http://example.com/image.jpg";
image.setAttributeNode(src);
document.body.appendChild(image);
})
注意:在我的例子中,我已经将submit
事件更改为click
事件。如果您愿意,您仍然可以使用提交,它可能仍然可以工作,只要您返回false
或使用preventDefault
。
我使用的是imagesLoaded v3.1.8
你可以在github上找到:https://github.com/desandro/imagesloaded
他们的官方网站:http://imagesloaded.desandro.com/
- 在通过child.print()打印之前,我如何等待图像加载到我的新窗口中
- 在检索数据时是否可以停止图像加载请求
- 如何让我的网站上的WEBP图像加载在morzilla firefox中有一个可能的解决方案吗?如果是,那么如何
- jQuery:获取图像加载错误的详细信息
- 在safari和chrome中,js图像加载产生了奇怪的结果
- 图像加载不适用于 IE 8 或更低版本
- 这个图像加载功能有什么作用
- JavaScript 图像加载器不起作用
- 动态图像加载是否会减少服务器过载
- 跨来源图像加载被拒绝-仅限iPhone-简单图像上传
- 纯javascript的进度图像加载程序仅当用户单击提交html表单时
- 使用JavaScript延迟图像加载
- 如果当前图像加载缓慢,如何加载其他图像
- HTML图像加载触发一个错误
- 将图像加载到localStorage,并将图像src设置到该位置
- jquery图像加载检查错误
- 将图像加载到织物画布背景中
- 需要在bootstrap css中单击时将图像加载为模态
- 正在显示加载..在将新图像加载到网站时播放动画
- 砖石事件:在图像加载和布局完成后调用事件