gpt4 book ai didi

javascript - 如何在javascript中动态添加复选框到表格中

转载 作者:行者123 更新时间:2023-12-02 23:53:14 25 4
gpt4 key购买 nike

我在如何将复选框动态添加到 JavaScript 代码中遇到问题。我有不同的场景。我通过ajax获取数据所以我需要在javascript而不是html中添加table thead。但现在我想将复选框添加到我的标题中。事实上,我添加了它们,但我不知道如何用一个复选框来检查它们。我还编写了代码来选择所有内容,但这仅在我的标题位于 html 中时才起作用。下面是我的代码,它会给你一个清晰的 View 。尝试在编辑器中阅读它,因为它更复杂:)

//Javascript

$(document).ready(function() {

$(document).ready(function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
});

$('select[name="class_id"]').on('change', function() {
var classID = $(this).val();
if (classID) {

$.ajax({

url: '/attendance/ajax/' + classID,
type: "GET",
dataType: "json",
success: function(data) {

var markup = '';
markup += '<tr><th style="width: 2%" class="align-middle text-center"><input type="checkbox" id="options"></th><th style="width: 2%" class="align-middle text-center">#</th> <th style="width: 15%" class="text-center">Student ID<input type="text" class="form-control" disabled></th> <th style="width: 15%" class="text-center">Student Name<input type="text" class="form-control" disabled></th> <th style="width: 15%" class="text-center">Attendance<input type="text" class="form-control" disabled></th> <th style="width: 15%" class="text-center">Date<input type="text" class="form-control" disabled></th> <th style="width: 15%;" class="align-middle text-center">Actions</th> <tr>';

$.each(data, function(key, value) {

markup += '<tr> <td><input class="checkBoxes" type="checkbox" name="checkBoxArray[]"></td> <td><input type="hidden" value="' + value.id + '" name="id[]">' + value.id + '</td> <td><input type="hidden" value="' + value.student_id + '" name="student_id[]">' + value.student_id + '</td> <td><input type="hidden" value="' + value.first_name + '" name="first_name[]"><input type="hidden" value="' + value.last_name + '" name="last_name[]">' + value.first_name + ' ' + value.last_name + '<td><input type="hidden" value="' + value.attendance + '" name="attendance[]">' + value.attendance + '</td>' + '<td><input type="hidden" value="' + value.created_at + '" name="created_at[]">' + value.created_at + '</td>' + '<td style=" width=12%" class="text-center"> <a><button title="Edit" class="btn btn-outline-primary"><span class="fas fa-pencil-alt"></span></button></a> </td>' + '</td> <tr>';

});
$('table[id="studentsData"]').html(markup);
}
});
}
});
});

//用于选择所有复选框

$(document).ready(function() {

$('#options').click(function() {

if (this.checked) {
$('.checkBoxes').each(function() {
this.checked = true;
});
} else {
$('.checkBoxes').each(function() {
this.checked = false;
});
}

});

});

最佳答案

问题在于 DOM 元素上事件处理程序的执行。浏览器从上到下渲染并执行代码(在大多数情况下)。这意味着您在通过 Ajax 请求添加所有复选框之前执行 $('#options').click() 。因此,您尝试将事件处理程序附加到当时不存在的元素。要使其工作,您必须向父元素添加事件监听器

$('table[id="studentsData"]').on('click', '#options', function() {})

来源: http://api.jquery.com/on/

第二个参数是您要定位的选择器

关于javascript - 如何在javascript中动态添加复选框到表格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55547761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com