我有一个小的.each()循环,用于检查span是否可见,我想检查是否选中了复选框,或者没有检查该span标记。
功能是
function processReports(){
$("#processedReports").html('');
var repName = $("#reviewType").val();
var divHTML = "<table style='width: 300px;'><tr><td style='width:30%; text-align:left; font-weight:bold;'>Report</td><td style='font-weight:bold; width:50%; text-align:right; padding-right:4px;'>Date/Time Run</td><td style='font-weight:bold;'>Progress</td></tr>";
var d = new Date();
var strDate = (d.getMonth()+1) + "/" + d.getDate() + "/" + d.getFullYear();
var strTime = d.toLocaleTimeString();
$("#reportChecks span:visible").each(function(){
var reportName = $(this).attr("reportType");
**if($('input.checkbox').is(':checked')){**
divHTML += "<tr><td style='width:30%; text-align:left;' class='" + reportName +"' advID='" + $(this).text() + "'>" + reportName + "</td><td style='width:50%; text-align:right; padding-right:4px;'>" + strDate + "," + strTime + "</td><td><a href='/Applications/help/Reports/Prospect_reports/Prospect1ClickReview.pdf' target='_blank'>View</a></td></tr>";
}
//alert($(this).text());
});
divHTML += "</table>";
$("#processedReports").prepend(divHTML);
$("#processedReports").show();
$("#IndReports").show();
}
基本上我有if($('input.checkbox')。is('checked')){......不起作用。 span标签只有一个复选框,所以我想要知道的是,是否检查了该元素,如果没有,则追加divHTML,继续循环 谢谢!
答案 0 :(得分:2)
使用.prop()值检查:
if($(this).find('.checkbox').prop('checked'))
如果没有赋值,则返回它所具有的值的布尔值。它也比.is(':checked')
快
jsPerf comparing .is(':checked')
and .prop('checked')
当然,如果只有一个复选框,您可以使用vanilla JS方式:
if($(this).find('.checkbox')[0].checked)
这个速度更快,也可以在提供的jsPerf中看到。
答案 1 :(得分:1)
您需要搜索当前span对象的后代以获取其中的输入。您可以在选择器的上下文中使用find()
或传递this
。如果您使用上下文,它将被翻译为find(),所以我更喜欢使用find。我假设.checkbox是您尝试访问的复选框元素类。
使用find()
if($(this).find('input.checkbox').is(':checked'))
如果checkbox
不是类,则输入
if($(this).find(':checkbox').is(:checked'))
使用上下文
if($('input.checkbox', this).is(':checked'))