我使用jQuery将行追加到表。我只想访问最后附加的行元素,并设置该特定行的data-i =“”属性。
不管我写last()
或:first
或:first-child
或last-child
在下面的语句中,总是选择表的底行。
同样,它会删除表中的每一行data-i =“”属性值;除了底部tr。
如果只有一行,也无法设置data-i =“” attr。
function readURL(input) {
var el;
for (var i = 0; i < input.files.length; i++) {
if (input.files[i]) {
var reader = new FileReader();
reader.onload = function (e) {
el = '<tr><td><span><img src="' + e.target.result + '"/></span></td><td><input type="button" value="Cancel" data-i=""/></td></tr>';
$('table#uploadfiles tbody').after(el);
}
reader.readAsDataURL(input.files[i]);
imageList.push(input.files[i]);
if (imageList.length > 1) {
$("tr", "table#uploadfiles").filter(':last').find('input[value="Cancel"]').attr("data-i", imageList.length);
//el.find('input[value="Cancel"]').attr("data-i", imageList.length);
}
else {
//$this.find('input[value="Kapat"]').attr("data-i", imageList.length);
$('table#uploadfiles > tbody > tr > td').find('input[value="Cancel"]').attr("data-i", "1");
}
}
}
}
所以last()
,:first
,:first-child
,last-child
,.filter(':last')
不工作的手动附加表中的行。为什么它不工作?
我认为您只想添加索引增加的行(顶部的索引= 1,底部的索引将是2、3、4、5、6 ..... N)
您原始的解决方案有一个错误:onload
事件和以下imageList
代码是异步的。我们无法控制哪个将首先完成。
因此,我将您的代码修改为一个简单的解决方案:
更改imageList
为对象(词典)。
当前input.files[i]
存储在render.inputfile
创建全局索引fileIndex
以控制data-i="fileIndex"
在onload
功能上,将当前inputfile
映射存储到fileIndex
in中imageList
并fileIndex
增加。
当您单击“取消”按钮时,您可以通过以下方式获取索引data-i
并访问原始文档input.file
:imageList[index]
我的示例代码:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句