2015-11-30 4 views
1

Я сделал данные и настраивал их данные, но когда я нажимаю кнопку в первом столбце, она работает только на первой странице и не может нажимать на другие передовые страницы.DataTable не может нажать кнопку после разбивки на страницы

$('#tbl').DataTable({ 
    responsive: true, 
    data: data1, 
    autoWidth: false, 
    "order": [[ 7, "asc" ]], 
    "iDisplayLength": 5, 
    "pagingType": "full_numbers", 
    "dom": '<"top">rt<"bottom"p><"clear">', 
    "oLanguage": { 
     "sEmptyTable":  "Not Record" 
    }, 
    "columnDefs": [ 
     { "visible": false, "targets": [ 6,7,8 ] } 
    ], 
    "columns": [ 
     {},{"sClass": "dt-body-justify"},{},{},{},{},{},{},{},{} 
    ] 
}); 

НО когда для функции мыши в режиме реального времени, он все еще может не работать

$('#tbl tbody tr #edit_current_product').delegate('a', 'click', function() { 
    ....... 
}); 

ответ

1

id «s должно быть уникальным. Мы не знаем вашу разметку, но

$('#tbl tbody tr #edit_current_product').delegate('a', 'click', function() 

кажется совершенно неправильным. Либо у вас есть несколько <a> с таким же идентификатором #edit_current_product, либо что-то на самом деле происходит, вы удалены со страницы, где находится #edit_current_product.

Я предполагаю, что вы действительно хотите

$('#tbl').on('click', 'tbody tr a', function() 

или использовать класс вместо id

$('#tbl').on('click', 'tbody tr .edit_current_product', function() 

BTW, почему

"columnDefs": [ 
    { "visible": false, "targets": [ 6,7,8 ] } 
], 
"columns": [ 
    {},{"sClass": "dt-body-justify"},{},{},{},{},{},{},{},{} 
] 

вам просто нужно

"columnDefs": [ 
    { "visible": false, "targets": [ 6,7,8 ] }, 
    { "sClass": "dt-body-justify", targets : [1] } 
] 
+0

Успешно нажмите на другие страницы таблицы, спасибо вам большое! Но теперь возникает другая проблема, данные, полученные в одной и той же строке, различны. Например, максимум первой страницы - это пять строк, на второй странице, когда я нажимаю первую строку, она по-прежнему дает мне первые данные строки первой страницы, а не первую строку данных второй страницы. –

+0

var rowindex = $ (this) .closest ('tr'). Index(); var data1 = $ ('# tbl'). DataTable(). Row (this.row_selected) .columns (8) .data(); var a = data1 [0] [rowindex]; –

+0

@EliceEe - это потому, что '$ (this) .closest ('tr'). Index();' дает вам индекс ** jQuery ** DOM, вам нужна таблица ** dataTables ** index -> '. row (this) .index() '(если он находится внутри обработчика tr-click) – davidkonrad