Javascript 单击元素后取消jQuery.load()事件
在缩放低分辨率图像时,我正在加载一个新的高分辨率图像,其类别为Javascript 单击元素后取消jQuery.load()事件,javascript,jquery,Javascript,Jquery,在缩放低分辨率图像时,我正在加载一个新的高分辨率图像,其类别为.streamdimage。每当我开始加载.streamdimage时,我都会将低分辨率.previousImage放在.streamdimage上方的占位符中。这是为了始终有一个可见的图像,并且每当高分辨率完成加载时,.previousImage将被删除,高分辨率将可见 Javascript jQuery('.streamedImage'+imgNum).load(function() { jQuery('.previou
.streamdimage
。每当我开始加载.streamdimage
时,我都会将低分辨率.previousImage
放在.streamdimage
上方的占位符中。这是为了始终有一个可见的图像,并且每当高分辨率完成加载时,.previousImage
将被删除,高分辨率将可见
Javascript
jQuery('.streamedImage'+imgNum).load(function() {
jQuery('.previousImage').remove();
jQuery('.loadingDiv').remove();
console.log('loaded');
});
HTML
<img id="dialogPreviousImage1" class="previousImage cursorDrag" processid="372014134361312"
src="dialogImageStreamer.php?doc=Vortex/inProc/1438/372014134361312/imageLarge12.jpg&userName=jcAdmin&processId=372014134361312&mode=hires&x0=0&y0=0&x1=599.017&y1=791.633&resol=5.7">
<img id="dialogImage1" class="streamedImage1 cursorDrag" processid="372014134361312"
src="dialogImageStreamer.php?doc=Vortex/inProc/1438/372014134361312/imageLarge12.jpg&userName=jcAdmin&processId=372014134361312&mode=hires&x0=0&y0=0&x1=599.017&y1=791.633&resol=8.7">`
解决方案:
jQuery('.streamedImage'+imgNum).on('load', function(){
jQuery('.previousImage').remove();
jQuery('.loadingDiv').remove();
})
伙计们,谢谢你们的帮助,没有它我是不会来这里的
每当在我的GUI中选择另一个工具时,我都会运行一个名为softproof.disableZoom()
的js函数。在这个函数中,我运行了.unbind()代码>在图像上。这反过来又阻止了我的挂起加载事件的触发
我需要明确地.unbind('click');而不是
.unbind()` 第二次单击似乎会触发另一个加载事件,该事件会取消第一次
也许您可以在图像中添加一个属性,表示您正在加载过程中,如果您在后续事件中检测到该属性,请忽略单击?比如:
$('.previousImage').on('click', function(e) {
if( $(this).data('loading') == true ) {
return false;
}
$(this).data('loading', true);
/* your loading logic */
});
是否有任何事件处理程序绑定到任何父元素?也许点击正在传播到一位家长,而这正是打断事情的原因。你可以通过使用
这将是一个很好的解决方案,但我必须允许在加载.streamdimage
时单击.previousImage
。我有一个密度计工具,当点击图像时,可以从选定的x,y坐标中检索颜色信息。因此,我希望允许用户仍然能够执行这些操作。我是否可以运行某种类型的观察程序,不断检查.streamdimage
是否已加载?您是否可以使用我的代码停止第二次加载,并仍然执行其他逻辑?如果加载正在发生,则不要返回false,而是将逻辑封装在if中,并检查加载是否为false。是。每当用户选择颜色选择器时,都会对该图像应用.click,以便我可以绘制reading.AFAIK,单击不会停止挂起的加载事件触发,因此您应该检查绑定到加载的任何位置,并确保除非绝对必要,否则不会返回false。如果确实需要取消事件的默认行为,请使用event.preventDefault(),它仍然允许对同一事件执行不相关的处理程序。这就是我在没有看到更多代码的情况下所能提出的建议。好的,谢谢。我会处理这个问题,并在找到解决方案后回复。我感谢你们两位的帮助。在同一个元素上运行的解除绑定是否会阻止挂起的加载事件触发?每当我启用缩放工具时,我都会添加一个。单击图像以执行缩放操作。无论何时禁用缩放工具,我都会运行一个unbind()
;在图像上。用户激活缩放工具并在单击低分辨率img时请求hires图像。无论何时激活缩放工具,都会添加一个.click()
,以执行缩放操作。每当激活“我的颜色选择器工具”时,我们都会在缩放工具的图像上运行.unbind()
,并绑定一个新的。在颜色选择器工具的图像上单击()。似乎是这种添加.click和.unbind的方法导致了我的问题。
$('.previousImage').on('click', function(e) {
e.stopPropagation();
});