jquery插件破坏只是因为我删除了' .css({display:' none'})'

时间:2013-04-12 17:12:02

标签: javascript jquery css

我正在使用一个jquery插件,用div替换表单的文件输入,所以当你点击div时,弹出文件浏览器。当您选择文件时,表单会自动提交,结果会进入隐藏的iframe。所有这一切背后的想法是,你可以只有一个图像说“点击上传”,只需点击一下,就会出现一个文件浏览器,当你选择它在幕后上传的文件时。

无论如何,我知道文件提交时我的php中出现了问题,但由于结果被加载到隐藏的iframe中,我无法看到错误是什么!

所以显然从iframe中删除隐藏的样式,但问题是插件添加了显示:隐藏在插件的javascript中。它确实:

var iframe = $(
        '<iframe '+
            'id="iframe'+id+'" '+
            'name="iframe'+id+'"'+
        '></iframe>'
    ).css({
        display: 'none'
    });

但是,如果我删除了:

.css({
        display: 'none'
    });

位,然后整个事情似乎突破了点击图像并点击“上传”不再带来文件浏览器。

插件javascript不长但可能太长而无法在此处发布,但您可以在此处查看:http://liquidlizard.net/jquery.ocupload.js如果有人可以帮助我,那就太棒了!

如何删除那个css()函数会阻止整个工作?有没有其他方法可以看到隐藏的iframe的内容?

修改 这是评论中建议的jsfiddle。 http://jsfiddle.net/VF6Qb/ 如果删除.css({display:'none'}),则从第35行开始的javascript中;然后单击div将不再打开文件浏览器对话框

1 个答案:

答案 0 :(得分:0)

当您删除display:none;时,<iframe>会以某种方式重叠文件输入和单击的div,因此它不会触发文件浏览器。您可以测试this fiddle我已经交换了iframe和提交表单的DOM位置,并且瞧 - 它可以工作。

但是,仅检查iframe中的错误文档时,您不会使iframe可见,而只是检查FireBug's net panel中的源代码(和HTTP标头)。