2012-02-04 62 views
1

我使用jQuery插件Uploadify将视频上传到我的服务器。一旦页面加载,它会发现一个特定的类名称的所有文件输入元素,并调用它实例的Uploadify功能的函数:应用Uploadify新的DOM元素

$(document).ready(function(){ 
    $(".video_upload").each(function(){ 
     var t = $(this); 
     var f = $("#"+i).siblings(".show_file"); 
     f.hide(); 
     setupUpload(t,f); 
    }); 
}); 
function setupUpload(t,f){ 
    t.uploadify({ 
     'uploader'  : '<?=site_url('../assets/js/uploadify/uploadify.swf');?>', 
     'script'  : '<?=site_url('utility/send_vid');?>', 
     'cancelImg'  : '<?=site_url('../assets/js/uploadify/cancel.png');?>', 
     'folder'  : '/uploads/', 
     'auto'   : true, 
     'onComplete' : function(event, ID, fileObj, response, data) { 
      var r = $.parseJSON(response); 
      if(r.error){ 
       $("#"+i).siblings(".error").html(r.reason).show(); 
      }else{ 
       $("#"+i).siblings("#video_href").val(r.src); 
       setTimeout(function(){ 
        f.children('.file_name').text(r.nice_name); 
        f.show(); 
       },1000); 
      } 
     } 
    }); 
} 

这一切都完美。我想现在要做的是当用户点击一个特定的按钮时,在页面中插入一个新的文件输入元素。所以他们点击按钮,插入一个新的文件输入元素,需要通过Uploadify抓取并像其他输入一样转换。

新元素插入后,我尝试并调用setupUpload()功能,但它不能正常工作。这种函数仅在页面加载时才起作用,还是可以在任何时候调用它?

编辑:

暂时,我打电话与下列参数setupUpload()函数:

var t = $("#ind_video_2"); 
    var f = t.siblings(".show_file"); 
    setupUpload(t,f); 

的ID是新元素的ID,但我只是用它作为一个临时的选择,直到我知道了整个事情的作品,并会使用更多的东西动态...

+0

当你调用创建输入元素之后'setupUpload'方法做传递什么参数? – ShankarSangoli 2012-02-04 20:37:07

+0

@ShankarSangoli我编辑的问题,增加了有关在哪里'i'代码中的'$内声明的参数 – hohner 2012-02-04 20:42:52

+0

一些更多的信息(“video_upload”)。每个()'? – ShankarSangoli 2012-02-04 20:48:29

回答

0

得到这个工作,你需要用一个功能都被称为在页面加载时,每当你的东东在未来。因此,像:

function setupUpload(){ 
    $(".video_upload").each(function(){ 
     var t = $(this); 
     if(t.siblings('.uploadifyQueue').length==0){ 
      var f = t.siblings(".show_file"); 
      t.uploadify({ 
       'uploader'  : '<?=site_url('../assets/js/uploadify/uploadify.swf');?>', 
       'script'  : '<?=site_url('utility/send_vid');?>', 
       'cancelImg'  : '<?=site_url('../assets/js/uploadify/cancel.png');?>', 
       'folder'  : '/uploads/', 
       'auto'   : true, 
       'onComplete' : function(event, ID, fileObj, response, data) { 
        var r = $.parseJSON(response); 
        if(r.error){ 
         t.siblings(".error").html(r.reason).show(); 
        }else{ 
         t.siblings("#video_href").val(r.src); 
         setTimeout(function(){ 
          f.children('.file_name').text(r.nice_name); 
          f.show(); 
         },1000); 
        } 
       } 
      }); 
     } 
    }); 
} 

所有你需要做的就是把这个当jQuery是准备好或者当用户点击一个按钮,插入新的DOM元素。