Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery中复制元素的绑定问题_Javascript_Jquery_Html_Css_Ajax Upload - Fatal编程技术网

Javascript jQuery中复制元素的绑定问题

Javascript jQuery中复制元素的绑定问题,javascript,jquery,html,css,ajax-upload,Javascript,Jquery,Html,Css,Ajax Upload,这实际上是一个更大的问题,因为我知道有几种方法可以解决这个问题,但我会尝试总结一下 我尝试做的是:我正在使用这个jQuery插件通过Flash上传文件。但是,我应该将此函数绑定到的元素#fileInput是一个活动元素,它是在加载页面后生成的:$('#fileInput').uploadify()。fileInput是活动元素的原因是因为我使用FancyBox弹出一个DIV,而这个FancyBox基本上只是“克隆”了DIV的内部html 发生了什么:当我点击“浏览”上传文件时,并没有上传进度条。

这实际上是一个更大的问题,因为我知道有几种方法可以解决这个问题,但我会尝试总结一下

我尝试做的是:我正在使用这个jQuery插件通过Flash上传文件。但是,我应该将此函数绑定到的元素#fileInput是一个活动元素,它是在加载页面后生成的:$('#fileInput').uploadify()。fileInput是活动元素的原因是因为我使用FancyBox弹出一个DIV,而这个FancyBox基本上只是“克隆”了DIV的内部html

发生了什么:当我点击“浏览”上传文件时,并没有上传进度条。原因是Uploadify无法绑定到活动元素

问题: 1.我试图在uploadify代码中用live()替换bind(),但没有成功,因为bind()允许传递[data]。LiveQuery插件的语法也与bind()不同。是否有类似于bind但适用于活动元素的内容

  • 如果我不尝试替换bind()函数并保持uploadify代码不变。有人知道如何更改FancyBox中的代码,使其不会生成克隆以生成活动元素吗?我知道这也是一个很难回答的问题
  • 注意:FancyBox站点似乎已死亡-->


    多谢各位

    您可以重载
    live
    方法,使其支持
    数据
    作为第二个参数:

    jQuery.fn.live = (function(_live){
        return function( type, data, fn ) {
    
            var _fn;
    
            if ( jQuery.isFunction(fn) ) {
                _fn = function(e) {
                    e.data = data;
                    return fn.call( this, e );
                };
            }
    
            return _live.call( this, type, _fn || fn || data );
        };
    })(jQuery.fn.live);
    
    活动(…)
    替换
    绑定(…)
    的所有实例现在应该可以工作了


    注意:您必须将重载方法置于所有其他方法之上

    > P>您可以考虑更改FANCYBOX代码,以支持在克隆HTML之后调用回调函数。然后,将uploadify()调用放在回调函数中。

    根据我的经验,我发现实现这一点的唯一方法是使用livequery

    它有一个类似的语法,在您的情况下,要在live元素上绑定uploadify,您可以使用

    $('#fileInput').livequery(function(){
      $(this).uploadify();
    })
    

    Livequery接受没有事件的函数,并在每次DOM发生更改时执行这些函数。元素是如何生成的?如果它是使用jQuery从服务器获取的,您可以使用一种更黑客的方法来修复它,只需将jQuery runs eval()放在它运行到的任何脚本标记上,这样您就可以:

    <script type='text/javascript'>
    $(function(){
        $('#fileInput').uploadify();
    });
    </script>
    
    
    $(函数(){
    $('#fileInput').uploadify();
    });
    

    在获取的html中,它将在加载时绑定它,而不是试图实时监视它。另外,如果您再次获取html,它将被解除绑定。

    我做了您的更改,常规方法(没有活动元素)现在也不起作用。看看这里的js,你应该添加代码示例。没有它真的很难理解。很抱歉,我决定完全放弃上传,改用swfupload.org!