【发布时间】:2013-03-04 20:49:40
【问题描述】:
我正在开发一个图片上传器应用程序,除了一个仅在 Chrome 中出现的错误之外,一切都运行良好。我已将问题简化为一个未通过的回调。
问题是 .click() 触发器的 .fadeOut 回调未触发。我在下面链接的小提琴中重新创建了一个简化版本。第一次单击开始淡出,当淡出完成时,.click 触发器不会发生。再次单击 会触发触发器。任何想法为什么?
HTML:
<div><input type="file" name="image_file" id="image_file"/></div>
<div class="overlay_wrap">
Overlast
</div>
<a id="click" href="">Click</a>
jQuery:
$(document).ready(function() {
$("#click").click(function(event) {
event.preventDefault();
$('.overlay_wrap').fadeOut(1000, function(event){
$('#image_file').trigger('click');
});
});
});
感谢您的帮助!
编辑:旧的 Fiddle 链接已更改。
【问题讨论】:
-
不知何故将 trigger() 放在回调中似乎推迟了事件,看起来它是 Chrome 的安全停止事件,可能是因为它认为它不是用户生成的或类似的东西。只是将其从回调中取出即可解决问题,而使用常规 setTimeout 进行测试似乎也有同样的问题,因此它与 trigger() 的延迟有关。有一个答案here 处理了一个类似的问题。
-
another answer 支持 adeneo 的说法。
-
所以没有办法解决这个问题?
标签: jquery callback click fadeout