And*_*mes 6 html javascript jquery file-upload blueimp
我正在使用这个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);
});
}
});
Run Code Online (Sandbox Code Playgroud)
这就是应该触发上传的内容:
<input class="fileupload" type="file" name="files[]" data-url="uploads/">
Run Code Online (Sandbox Code Playgroud)
这是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();
});
Run Code Online (Sandbox Code Playgroud)
就像我说的,当我把它添加到实际的代码中,而不是动态它的罚款.有人可以帮忙吗?
Mic*_*bak 18
这是因为fileupload在添加元素之前绑定事件.
尝试将代码移动到回调函数中,该函数将在创建输入元素后执行.由于appendTo() 不支持回调,您可以使用each(callback):
$('code_that_you_append').appendTo('some_element').each(function () {
// here goes $('.fileupload').fileupload({ ... }) function
});
Run Code Online (Sandbox Code Playgroud)
如果需要将事件绑定到.fileupload代码中的多个位置,则可以创建一个函数来避免代码重复,如下所示:
function bindFileUpload() {
$('.fileupload').fileupload({
dataType: 'json',
done: function (e, data) {
$.each(data.result.files, function (index, file) {
alert(file.name);
});
}
});
};
Run Code Online (Sandbox Code Playgroud)
然后在回调中调用它,就像之前一样:
$('code_that_you_append').appendTo('some_element').each(function () {
bindFileUpload();
});
Run Code Online (Sandbox Code Playgroud)
我创建了一个小演示.它绑定click而不是fileupload简化事物(fileupload是外部插件......),但一般规则保持不变.
| 归档时间: |
|
| 查看次数: |
22187 次 |
| 最近记录: |