javascript – jQuery文件上传在动态创建文件输入时不起作用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – jQuery文件上传在动态创建文件输入时不起作用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3016字,纯文字阅读大概需要5分钟。
内容图文
我正在使用这个jquery上传器(http://blueimp.github.io/jQuery-File-Upload/basic.html),当文件输入放在网站的原始代码中时它工作正常,但我动态地用jquery附加字段,它不起作用.这是触发上传的jquery:
$('.fileupload').fileupload({
dataType: 'json',
done: function (e, data) {
$.each(data.result.files, function (index, file) {
alert(file.name);
//$('<p/>').text(file.name).appendTo(document.body);
});
}
});
这就是应该触发上传的内容:
<input class="fileupload" type="file" name="files[]" data-url="uploads/">
这是jquery附加的代码:
$(document).on('click','.addItem', function(){
$('<!--ROW START--> <form class="widget-content item" data-url="uploads/"> <div class="row"> <div class="col-md-3"><input type="text" class="form-control" name="itemName[]"></div> <div class="col-md-3"><textarea class="auto form-control" name="itemDescription[]" cols="20" rows="1" style="word-wrap: break-word; resize: vertical;"></textarea></div> <div class="col-md-3"><textarea class="auto form-control" name="itemCondition[]" cols="20" rows="1" style="word-wrap: break-word; resize: vertical;"></textarea></div> <input type="hidden" class="itemId" name="itemId[]" value=""> <input type="hidden" name="itemInventoryId[]" value="<?=$_GET["inventory_id"]?>"> <input type="hidden" name="itemParent[]" value="'+$(this).closest('.formHolder').data('parent-room')+'"> <div class="col-md-2"> <div class="fileinput-holder input-group"> <input class="fileupload" type="file" name="files[]"> </div> </div> <div class="col-md-1 align-center"><i class="save icon-ok large"> </i> <i class="delete icon-trash large"> </i></div> </div> </form> <!--/ROW END-->').fadeIn(500).appendTo($(this).parents().siblings('.items'));
$(this).parent().parent().siblings('.widget-header, .header-margin, .hide').removeClass('hide').fadeIn();
});
就像我说的,当我把它添加到实际的代码中,而不是动态它的罚款.有人可以帮忙吗?
解决方法:
这是因为在添加元素之前绑定了fileupload事件.
尝试将代码移动到回调函数中,该函数将在创建输入元素后执行.从appendTo()doesn’t support callback开始,你可以使用每个(回调):
$('code_that_you_append').appendTo('some_element').each(function () {
// here goes $('.fileupload').fileupload({ ... }) function
});
如果需要在代码中的多个位置将事件绑定到.fileupload,则可以创建一个函数来避免代码重复,如下所示:
function bindFileUpload() {
$('.fileupload').fileupload({
dataType: 'json',
done: function (e, data) {
$.each(data.result.files, function (index, file) {
alert(file.name);
});
}
});
};
然后在回调中调用它,就像之前一样:
$('code_that_you_append').appendTo('some_element').each(function () {
bindFileUpload();
});
我创建了一个little demo.它绑定click而不是fileupload来简化事情(fileupload是外部插件…),但一般规则保持不变.
内容总结
以上是互联网集市为您收集整理的javascript – jQuery文件上传在动态创建文件输入时不起作用全部内容,希望文章能够帮你解决javascript – jQuery文件上传在动态创建文件输入时不起作用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。