Jadual data jQuery yang tidak dapat mencari indeks baris sel daripada elemen anak tidak boleh dibuat responsif
P粉916760429
P粉916760429 2023-09-12 18:59:54
0
1
521

Saya mempunyai jadual data dengan medan input. Apabila pengguna memasuki medan, saya perlu mencari nombor baris yang mereka masukkan. Saya bertanya soalan sebelum ini dan mendapat jawapan yang baik, tetapi jika jadual data responsif dan medan berada dalam pop timbul, jawapan itu tidak lagi berfungsi.

Ini kod saya:

function drawInput(data, type, row, meta) { return ''; } var data = [{ c1: 'r1c1', c2: 'r1c2', c3: 'r1c3' }, { c1: 'r2c1', c2: 'r2c2', c3: 'r2c3' }]; $(function() { var table = $('table').dataTable({ info: false, searching: false, ordering: false, paging: false, columns: [{ defaultContent: '' }, { data: 'c1', name: 'c1', defaultContent: '', render: drawInput }, { data: 'c2', name: 'c2', defaultContent: '', render: drawInput }, { data: 'c3', name: 'c3', defaultContent: '', render: drawInput } ] }); table.api().rows.add(data); table.api().draw(); $('body').on('change', 'table :input', function(e) { // 找到包含输入字段的行 //console.log(this); var row = table.api().row($(this).closest('td')); // 显示行索引 - 结果为undefined!为什么? console.log(row.index()); }); });
     
Col 1 Col 2 Col 3

Jika anda menjalankan kod ini dalam tetingkap yang cukup besar, ia akan berfungsi dengan baik. Tetapi jika anda mengecilkan tetingkap supaya lajur kanan turun secara responsif ke dalam sub-baris, kod untuk mencari indeks baris tidak lagi berfungsi.

Bagaimana untuk mencari barisan sel kanak-kanak dengan betul?

P粉916760429
P粉916760429

membalas semua (1)
P粉722521204

Dang.row($(this).closest("td")).index()未定义时,使用table.api().row(this).index().

Cukup aneh,table.api().row(this)hanya berfungsi pada baris yang dikembangkan, bukan baris asal, jadi anda perlu terus menggunakan .closest("td") untuk mendapatkan baris asal.

Secara khusus,table.api().row(...)将返回一个jQuery对象,因此要检查是否返回了任何行,请检查.length === 0.

Diberi:

let row = table.api().row($(this).closest("td")) if (row.length === 0) row = table.api().row(this);

Kemudian.index()akan memberikan indeks baris yang dijangkakan.

Coretan kod yang dikemas kini:

function drawInput(data, type, row, meta) { return ''; } var data = [{ c1: 'r1c1', c2: 'r1c2', c3: 'r1c3' }, { c1: 'r2c1', c2: 'r2c2', c3: 'r2c3' }]; $(function() { var table = $('table').dataTable({ info: false, searching: false, ordering: false, paging: false, columns: [{ defaultContent: '' }, { data: 'c1', name: 'c1', defaultContent: '', render: drawInput }, { data: 'c2', name: 'c2', defaultContent: '', render: drawInput }, { data: 'c3', name: 'c3', defaultContent: '', render: drawInput } ] }); table.api().rows.add(data); table.api().draw(); $('body').on('change', 'table :input', function(e) { // Find the row that contains the input field console.log(this.id, this.name, table.api().row($(this).closest("td")).index(), table.api().row(this).index()); var row = table.api().row($(this).closest("td")) if (row.length === 0) row = table.api().row(this); // Show the row index - result is undefined! Why? console.log(row.index()); }); });
     
Col 1 Col 2 Col 3
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!