你clone的那个是appendChild的form里面的吗?你设置的position: absolute; ,很可能不在这里面

解决方案 »

  1.   

    你可以调试下,它的parentNode是什么
      

  2.   

    console.log(n[0].parentNode);
    返回
    日志: [object HTMLFormElement]
    没问题啊,我页面就一个form,所以不必再进一步区分我测试过确实就是这个
    t.select();
    不选择他就跟预期的理论结果完全一样,有了这句就变成不透明的了
      

  3.   

    我更简单的总结,大体结构是这样的:
    <div> -> {position: relative; overflow: hidden;}
        <form> -> {position: absolute; top: -2px; right: -2px; z-index: 200; font-size: 300%; opacity:0; filter:alpha(opacity=0);}
            <input type="file">
        </form>
    </div>
    ----------------------------------------
    这样的话,FORM透明,DIV再做些美化就可以让DIV的点击实际点的是INPUT了,这一点再啥浏览器上都可以,然后我这样:var r = $(':file').select(),  
    n = r.clone(true).appendTo(‘form’);
    r.remove();看上面的select,虽然这个select在这里没有意义,但是作用我上面说了,这里仅仅是显示现象,有他的话,替换一个input就不透明;如果没有select,那替换之后还是透明,这个现象发生在IE8,其他IE不知,但chrome我测试过没问题,依然透明;
      

  4.   

    或者更简单的问:
    有没有啥办法可以实现 t.unselect(),这样的命令啊,就是我选择完,使用完之后,给恢复成未选择的状态。