折叠项目 jQuery 的数据表响应问题
Datatables Responsive Issues with jQuery on collapsed items
我在我的 Web 项目中使用 Datatables 库作为标准 HTML 的替代品,并且公平地说,它在移动搜索和订购方面相当不错。
我遇到的问题是,在全屏模式下,我的 jQuery 和 table 没有被响应式 JS 修改,它工作正常,我的 jQuery 执行得很好 否问题,每个人都很高兴。一旦它为移动或中型设备折叠,您可以单击它打开以展开 table 并且所有元素都在视觉上并且可用但是我编写的 jQuery 脚本的 none 执行.
我认为这与更改 HMTL 有关,我不确定如何正确定位它以使其执行 jQuery 代码。
我添加了一张 table 的完整图片和一张响应式的图片,以表明我对尺寸表示歉意
已满
响应
这是我的 jQuery 的一部分,我认为可能是选择器在响应时没有找到 class。
$('#quotes_table').DataTable({
stateSave:true,
"dom": '<"pull-left"f><"pull-right"l>tip',
"fnDrawCallback":function(){
$(".action_select").change(function () {
var text = $(this).val();
var count = $(this).attr('num');
var row_id = $("#row_id_" + count).attr('value');
var name = $("#name_" + count).attr('value');
var email = $("#email_" + count).attr('value');
var tel = $("#telnum_" + count).attr('value');
var house = $("#house_num_" + count).attr('value');
var desc = $("#request_"+count).attr('value');
var postcode = $("#postcode_" + count).attr('value');
if (text == 'accept') {
var choice = confirm("Are you sure you want to accept the job?")
if (choice == true) {
$.ajax({
url: "<?php echo base_url();?>jobs/accept_job",
type: 'POST',
data: {
row_id: row_id,
name: name,
email: email,
telnum: tel,
house: house,
postcode: postcode,
desc:desc
},
success: function () {
$(".tbl_row_" + count).css("background-color", "#00CC00");//Green
alert("Job Accepted");
},
error: function () {
alert("Error");
}
})
}
}
if (text == 'reject') {
提前感谢您的帮助。
您需要使用委托事件处理程序,因为当 table 响应时您的 <select>
控件会被重新创建。
另一个问题是您要在 fnDrawCallback
回调函数中添加事件处理程序。它似乎不是放置事件处理程序的最佳位置。
我认为您需要按如下方式更改代码:
$('#quotes_table').DataTable({
stateSave:true,
"dom": '<"pull-left"f><"pull-right"l>tip',
// (... skipped ...)
});
// Handle SELECT control change event
$('#quotes_table tbody').on('change', '.action_select', function(e){
// (... skipped ...)
});
我在我的 Web 项目中使用 Datatables 库作为标准 HTML 的替代品,并且公平地说,它在移动搜索和订购方面相当不错。
我遇到的问题是,在全屏模式下,我的 jQuery 和 table 没有被响应式 JS 修改,它工作正常,我的 jQuery 执行得很好 否问题,每个人都很高兴。一旦它为移动或中型设备折叠,您可以单击它打开以展开 table 并且所有元素都在视觉上并且可用但是我编写的 jQuery 脚本的 none 执行.
我认为这与更改 HMTL 有关,我不确定如何正确定位它以使其执行 jQuery 代码。
我添加了一张 table 的完整图片和一张响应式的图片,以表明我对尺寸表示歉意
已满
响应
这是我的 jQuery 的一部分,我认为可能是选择器在响应时没有找到 class。
$('#quotes_table').DataTable({
stateSave:true,
"dom": '<"pull-left"f><"pull-right"l>tip',
"fnDrawCallback":function(){
$(".action_select").change(function () {
var text = $(this).val();
var count = $(this).attr('num');
var row_id = $("#row_id_" + count).attr('value');
var name = $("#name_" + count).attr('value');
var email = $("#email_" + count).attr('value');
var tel = $("#telnum_" + count).attr('value');
var house = $("#house_num_" + count).attr('value');
var desc = $("#request_"+count).attr('value');
var postcode = $("#postcode_" + count).attr('value');
if (text == 'accept') {
var choice = confirm("Are you sure you want to accept the job?")
if (choice == true) {
$.ajax({
url: "<?php echo base_url();?>jobs/accept_job",
type: 'POST',
data: {
row_id: row_id,
name: name,
email: email,
telnum: tel,
house: house,
postcode: postcode,
desc:desc
},
success: function () {
$(".tbl_row_" + count).css("background-color", "#00CC00");//Green
alert("Job Accepted");
},
error: function () {
alert("Error");
}
})
}
}
if (text == 'reject') {
提前感谢您的帮助。
您需要使用委托事件处理程序,因为当 table 响应时您的 <select>
控件会被重新创建。
另一个问题是您要在 fnDrawCallback
回调函数中添加事件处理程序。它似乎不是放置事件处理程序的最佳位置。
我认为您需要按如下方式更改代码:
$('#quotes_table').DataTable({
stateSave:true,
"dom": '<"pull-left"f><"pull-right"l>tip',
// (... skipped ...)
});
// Handle SELECT control change event
$('#quotes_table tbody').on('change', '.action_select', function(e){
// (... skipped ...)
});