1

我有一个小的 .each() 循环来检查跨度是否可见,然后我想检查是否选中了该跨度标记的复选框。

功能是

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')){...... 不起作用。跨度标签中只有一个复选框,所以我要做的就是知道该元素是否被选中,如果它附加 divHTML,如果没有,继续循环谢谢!

4

2 回答 2

2

检查.prop()值:

if($(this).find('.checkbox').prop('checked'))

在没有赋值的情况下,这将返回它所具有的值的布尔值。它也比.is(':checked')

jsPerf 比较.is(':checked').prop('checked')

当然,如果只有一个复选框,你可以使用 vanilla JS 方式:

if($(this).find('.checkbox')[0].checked)

这在很大程度上更快,在提供的 jsPerf 中也可以看到。

于 2013-10-14T16:17:39.723 回答
1

您需要搜索当前 span 对象的后代以获取其中的输入。您可以使用find()或传入this选择器的上下文。如果您使用上下文,它将被翻译为 find(),所以我更喜欢使用 find。我假设 .checkbox 是您尝试访问的复选框元素的类。

使用查找()

if($(this).find('input.checkbox').is(':checked'))

如果checkbox不是类类型然后

if($(this).find(':checkbox').is(:checked'))

使用上下文

if($('input.checkbox', this).is(':checked'))
于 2013-10-14T16:16:19.793 回答