#jquery #datatables #jquery-events
#jquery #таблицы данных #jquery-события
Вопрос:
В документах для select
события указано, что первым аргументом является событие jQuery. Однако, когда я проверяю оба target
и currentTarget
по этому событию, они оба ссылаются на элемент таблицы.
Есть ли способ из select
события определить, каким был конкретный элемент в таблице, на который щелкнули для выбора строки? Мне нужно делать разные вещи в обратном вызове select на основе того, что было нажато. Например, если был установлен флажок, а не просто ячейка td, мне нужно иметь возможность определить.
Комментарии:
1. Разве второй аргумент
select
функции обратного вызова не ссылается на экземпляр api DataTables (строка в вашем случае)?2. Это так, но мне нужно знать конкретный элемент, на который был нажат. Я обновил вопрос, чтобы немного уточнить, что я ищу.
3. Насколько мне известно, вы не можете сделать больше, чем предлагает вам пользовательское
select
событие (получить определенную строку, столбец или ячейку), как указано в самой первой строке документа, на который вы ссылаетесь. Однако вы можете использовать свои собственныеclick
события для сбора необходимых данных.4. @Evgengorbunkov В моем конкретном случае это то, что я в конечном итоге сделал. Щелкните события на флажках, выберите или отмените выбор строки, чтобы вернуть ее обратно (не идеально, но работает в моем случае, поскольку обработчики выбора / отмены выбора строк мало что делают). Я думаю, вы правы — событие dt просто не дает нам этой информации, к сожалению.
Ответ №1:
Используйте четвертый аргумент обработчика событий indexes
(см. Примеры в select
документации по событию), чтобы получить выбранные строки, столбцы или ячейки.
Например:
var table = $('#example').DataTable();
table.on( 'select', function ( e, dt, type, indexes ) {
if ( type === 'row' ) {
var $rows = table.rows( indexes ).nodes().to$();
}
} );
Комментарии:
1. Я добавил немного больше разъяснений к вопросу. Что мне нужно знать, так это конкретный элемент, на который был сделан щелчок внутри ячейки.