Таблицы данных выбирают исходную цель щелчка события

#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. Я добавил немного больше разъяснений к вопросу. Что мне нужно знать, так это конкретный элемент, на который был сделан щелчок внутри ячейки.