检查是否选中了span中的复选框

时间:2013-10-14 16:14:07

标签: javascript jquery dom checkbox each

我有一个小的.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,继续循环 谢谢!

2 个答案:

答案 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'))