我有一个JSP页面,其中列出了如下文件:
每个文件都有其自己的唯一文件ID,我尝试实现for循环以获取“选中”复选框的文件的文件ID。
我的JS:
function fireGENURL(a){
try{
var selectedFiles = $('.fileCheck:checked');
// var fileID =$(selectedFiles[0]).attr('fileid');
var count = 0;
for(var file in selectedItems){
file=$(selectedFiles).attr('fileid');
count += 1;
alert(file+"has been selected");
}
当我在一个框上打勾时,它会正确返回警报值,但是当我在两个框上打勾时,它将返回警报两次,但会返回第一个复选框的fileID。它返回相同ID的两倍,但我的预期结果是返回了各自的ID。
我在这里做错了吗?
请帮助
编辑:
function fireGENURL(a){
try{
var selectedFiles = $('.fileCheck:checked');
if(selectedFiles.length < 1 ){
alert("Please select at least one file.");
return false;
}
// var fileID = $(selectedFiles[0]).attr('fileid');
var $fileChecks = $('.fileCheck:checked');
$fileChecks.each(function() {
var file = $(this).attr('fileid');
alert(file+"has been selected");
});
var count = $fileChecks.length;
$('body').pWin("open", {
x: 260,
y: 47,
height: 450,
width: 881,
title: "Generate URL",
skinMode:'dialog',
iframe:true,
url: "file/url/genurl.jsp",
data: {
nodeid : file
},
offResize:true,
offMove:true,
onTitle:false,
offBottom:true
});
}catch(e)
{
alert(e);
}
}
答案 0 :(得分:1)
使用each
遍历.fileCheck:checked
集合,然后可以在回调中使用$(this)
来引用包含该元素的jQuery对象。为此,您可以致电.attr('fileid')
以获得所需的内容:
const $fileChecks = $('.fileCheck:checked');
$fileChecks.each(function() {
const file = $(this).attr('fileid');
alert(file+"has been selected");
});
const count = $fileChecks.length;
您还可以考虑使用data-
属性,而不要使用fileid
之类的非标准属性:
<input type="checkbox" data-fileid="foo">
并使用
进行检索$(this).data('fileid');