This is the view of checkbox group
And this is my html code for the above view(there is more check boxes, only 2 mention here):
<div class="panel-body subject_names">
<div class="col-md-12">
<label for="checkboxes-0" class="col-md-7">
KE1-Financial Accounting & Reporting Fundamen
</label>
<input type="checkbox" data-subject-name="KE1-Financial Accounting & Reporting Fundamen" data-subject-ai="925" class="big-checkbox col-md-1 subject1" name="exam_subjects" id="checkboxes-0" value="1012">
<div class="col-md-4 pull-left">
<input id="training_institute" name="textinput" type="text" placeholder="" class="input-md">
</div>
</div>
<div class="col-md-12">
<label for="checkboxes-0" class="col-md-7">
KE2-Management Accounting Information
</label>
<input type="checkbox" data-subject-name="KE2-Management Accounting Information" data-subject-ai="926" class="big-checkbox col-md-1 subject1" name="exam_subjects" id="checkboxes-0" value="1013">
<div class="col-md-4 pull-left">
<input id="training_institute" name="textinput" type="text" placeholder="" class="input-md">
</div>
</div>
</div>
and this is my js code :
var subjects_names = [];
$.each($("input[name='exam_subjects']:checked").attr("data-subject-name"), function() {
subjects_names.push($(this).val());
});
Exception:
Exam_application_c:775 Uncaught TypeError: Cannot use 'in' operator to search for 'length' in KE1-Financial Accounting & Reporting Fundamen
答案 0 :(得分:3)
You're using $.each
on a string
, it needs to be an object
or an array
.
Try changing your code to this
var subjects_names = [];
$.each($("input[name='exam_subjects']:checked"), function () {
subjects_names.push($(this).data("subjectName"));
});
Or better yet use .each
as your iterating over a jQuery object
var subjects_names = [];
$("input[name='exam_subjects']:checked").each(function () {
subjects_names.push($(this).data("subjectName"));
});