jQuery   发布时间:2022-04-19  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jQuery .fadeOut回调.click不工作大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个图像上传应用程序,除了一个只在Chrome中发生的错误外,一切都运行良好.我已经把问题解决一个没有通过的回调.

问题是.fadeOut回调到.click()触发器没有触发.我在下面链接的小提琴中重新创建了一个简化版本.第一次单击启动fadeOut,当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');
        });
    });
});

http://jsfiddle.net/gg2a7/5/

感谢您的帮助!

编辑:有旧的小提琴链接,改变了.

解决方法

可悲的是,这不起作用.这一切都与浏览器内部的计时/线程功能有关.

问题的核心是:< input type =“file”/>无法以编程方式打开(Loads of questions on SO /关于它的东西).它不仅仅是Chrome; Firefox正在显示弹出窗口被阻止的消息,Safari也会阻止它,而在IE中,表单将不会提交.

这背后的原因是因为它存在潜在的安全风险.打开此< input type =“file”/>内部只能产生用户操作.由于.fadeOut(),浏览器不再将其识别为用户事件.现在我们回到浏览器的计时/线程,因为这确实有效.没有任何委托,也没有某种线程/超时阻止对话框打开.

$("#click").click(function(event) {
    event.preventDefault();
    $('#image_file').trigger('click');
});

JSFiddle.

为了表明它实际上是< input type =“file”/&gt ;,这里是< input type =“button”/>的示例.确实有效:

HTML

<input type="button" name="image_file" id="image_file" value="type='button'" />

JS

$("#click").click(function(event) {
        event.preventDefault();
        $('.overlay_wrap').fadeOut(1000,function(){
            $('#image_file').trigger('click');
        });
    });

    $('#image_file').click(function() {
         alert('ok');   
    });

JSFiddle.

长话短说:你不能用淡化效果做到这一点.你可以简单地打开对话框并隐藏元素,但这就是它的全部内容.

$("#click").click(function(event) {
    event.preventDefault();
    $('.overlay_wrap').hide();
    $('#image_file').trigger('click');
});

JSFiddle.

大佬总结

以上是大佬教程为你收集整理的jQuery .fadeOut回调.click不工作全部内容,希望文章能够帮你解决jQuery .fadeOut回调.click不工作所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。