【发布时间】:2015-06-09 22:39:02
【问题描述】:
我正在动态生成输入 div,然后尝试将图像导入 div,但文件上传不起作用。 我有一个用于文件上传而不是选择文件的图像按钮。
(function() {
var fileTriggers = $('.js_file_emit');
$('#row_container').on('click', '.js_file_emit', function() {
debugger;
console.log($(this).attr('data-file'));
$($(this).attr('data-file')).live('click', function(e) {
$('#' + $(this).attr('data-file')).on('change', function() {
handleFiles($(this).files, $(this).attr('data-preview'));
});
})
})
})();
如果我有预定义的输入,代码就可以工作。 http://jsfiddle.net/xnf0bht7/9/
这就是我生成 div 的方式
function updatePopupRows(data) {
var l_sRowContainer = "#row_container",
l_sNameTemp = null,
l_sRowTemp = null,
l_sRowHeader = null,
l_sImgTemp = null,
l_sFileTemp = null,
l_sPrevTemp = null;
$(l_sRowContainer).html('');
for (var i = 0; i < data.data.length; i++) {
l_sRowTemp = document.createElement('div');
$(l_sRowTemp).attr('class', 'row');
l_sRowHeader = document.createElement('div');
$(l_sRowHeader).attr('class', 'row_header_fancybox');
l_sNameTemp = document.createElement('span');
$(l_sNameTemp).html(data.data[i].name);
l_sImgTemp = document.createElement('input');
$(l_sImgTemp).attr('type', 'image').attr('class', 'js_file_emit').attr('id', 'js_file_emit').attr('src', '/toogle/resources/js/slickgrid/add.png').attr('data-file', 'group' + data.data[i].name + i);
l_sFileTemp = document.createElement('input');
$(l_sFileTemp).attr('type', 'file').attr('multiple', 'true').attr('id', "group" + data.data[i].name + i).attr('data-preview', 'preview' + data.data[i].name + i);
l_sPrevTemp = document.createElement('div');
$(l_sPrevTemp).attr('id', 'preview' + data.data[i].name + i);
$(l_sRowHeader).append(l_sNameTemp).append(l_sImgTemp).append(l_sFileTemp).append(l_sPrevTemp);
$(l_sRowTemp).append(l_sRowHeader);
$(l_sRowContainer).append(l_sRowTemp);
}
}
HTML:
<div id='row_container'></div>
【问题讨论】:
-
row_containerdiv 是动态生成的吗? -
那你不能用
$('#row_container').on('click',...,因为jquery看不到,给我一分钟写个答案 -
没有行容器。它不是动态生成的
-
哦,它在那里?所以你的代码是正确的,它应该可以工作
-
是的,它应该可以工作。它在小提琴中工作,但是当我动态生成输入时,它没有打开文件上传器弹出窗口
标签: javascript jquery