2015-01-18 3 views
0

배열의 표에 행을 채우고 있습니다. 각 행에는 특정 조건에 따라 확인되기를 원하는 체크 박스가 있습니다.JQuery - 표의 확인란을 선택하십시오.

그래서, 나는, 체크 박스를 확인하기 위해 노력하고있어 각 행을 채우기 만이 그것을 확인하지 않는 것 사용 후 :

var invoices = {% raw json_encode(invoices) %}; 
//console.log(invoices); 
var addRow = ''; 
for(var i = 0; i < invoices.length; i++){ 
    //alert(invoices[i].invoiceDueYear); 

    var date = new Date(invoices[i].invoiceDueYear,invoices[i].invoiceDueMonth,invoices[i].invoiceDueDay); 
    var d = date.getDate(); 
    var month = new Array(); 
    month[0] = "Jan"; 
    month[1] = "Feb"; 
    month[2] = "Mar"; 
    month[3] = "Apr"; 
    month[4] = "May"; 
    month[5] = "Jun"; 
    month[6] = "Jul"; 
    month[7] = "Aug"; 
    month[8] = "Sep"; 
    month[9] = "Oct"; 
    month[10] = "Nov"; 
    month[11] = "Dec"; 
    var m = month[date.getMonth()]; 

    var y = date.getFullYear(); 

    var inv = pad(invoices[i].invoiceNo,9,3); 

    if(invoices[i].currency === 'GB'){ 
     var currency = '&#163;'; 
    }else if(invoices[i].currency === 'US'){ 
     var currency = '&#36;'; 
    }else{ 
     var currency = '&#8364;'; 
    } 

    addRow += '<tr><td><input type="checkbox" class="filterPaid" id="invPaid'+i+'" value="outstanding" name="filterTasks[]"></td><td class="invoiceView" value="'+invoices[i].uid+'"><a href="#">' + inv + '</a></td><td>' + invoices[i].creditorName + '</td><td>' + currency + '' + invoices[i].balance + '</td><td>' + d + ' '+ m +' '+y+'</td></tr>'; 

    if(invoices[i].paid == 'yes'){ 
     $('.filterPaid').prop('checked', false); 
    }else{ 
     $('.filterPaid').prop('checked', true); 
    } 
} 
$('#invoiceTable tr').first().after(addRow); 

이유 :

if(invoices[i].paid == 'yes'){ 
    $('.filterPaid').prop('checked', false); 
}else{ 
    $('.filterPaid').prop('checked', true); 
} 

이 코드입니다 이 인스턴스의 체크 박스를 확인하지 않겠습니까?

+1

addRow += '<tr><td><input type="checkbox" class="filterPaid" id="invPaid'+i+'" value="outstanding" name="filterTasks[]"></td><td class="invoiceView" value="'+invoices[i].uid+'"><a href="#">' + inv + '</a></td><td>' + invoices[i].creditorName + '</td><td>' + currency + '' + invoices[i].balance + '</td><td>' + d + ' '+ m +' '+y+'</td></tr>'; if(invoices[i].paid == 'yes'){ $('.filterPaid').prop('checked', false); }else{ $('.filterPaid').prop('checked', true); 

변경은 체크 박스는 아직 DOM에 없기 때문에. – Mouser

답변

2

코드에서 checkbox는 jQuery를 사용하여 checked checked checked 속성을 설정하려고 할 때만 문자열입니다. 루프 외부에서 $('#invoiceTable tr').first().after(addRow);은 HTML 문자열을 DOM에 삽입합니다. 그 순간부터 문자열은 HTML로 파싱되며 코드를 사용하여 문자열을 특성으로 설정할 수 있습니다. 내 추천은 당신이 짓고있는 HTML 문자열에 checked 속성을 삽입하는 것이다. 이

var attr = ""; 
if(invoices[i].paid == 'yes'){ 
    attr = "checked"; 
} 

addRow += '<tr><td><input '+attr+' type="checkbox" class="filterPaid" id="invPaid'+i+'" value="outstanding" name="filterTasks[]"></td><td class="invoiceView" value="'+invoices[i].uid+'"><a href="#">' + inv + '</a></td><td>' + invoices[i].creditorName + '</td><td>' + currency + '' + invoices[i].balance + '</td><td>' + d + ' '+ m +' '+y+'</td></tr>'; 
+0

고마워 .... 그게 효과가있어. – user94628

관련 문제