Сделать строку Datatables кликабельной

У меня есть таблица, в которую загружаются данные через ajax с использованием datatables.net. Я хотел бы сделать так, чтобы когда пользователь нажимал на строку, он ссылался на URL-адрес, к которому добавлялась переменная get первичного ключа этой строки.

Я новичок в Datatables, поэтому моя взломанная попытка/идея заключалась в том, чтобы использовать Datatables для применения двух классов к двум столбцам с моим первичным ключом. Два класса были скрыты (css отображения: нет) и projectID (идентифицируя этот столбец, чтобы я мог получить его значение с помощью jquery). Я смог применить эти классы, используя свойство aoColumns, и оно скрыло столбец и добавило класс projectID. Однако я думаю, что, поскольку Datatables создает таблицу, это мешает мне использовать

$('#project-table tr').click(function(){alert('clicked');}

поэтому я попытался

$('#project-table tr').live('click',function(){alert('clicked');})};

Тоже безрезультатно.

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


person kackleyjm    schedule 06.04.2013    source источник


Ответы (1)


У меня есть таблица, в которую загружаются данные через ajax с помощью datatables.net

Это означает, что любые обработчики событий, привязанные к элементам во время загрузки страницы, не будут применяться к загруженным данным, если только событие не будет делегировано статическому родительскому элементу — это означает, что элемент никогда не удаляется и не заменяется и будет существовать бесконечно.

$(document).on('click', '#project-table tr', function(){
    alert('This is a click on a dynamic element');
});

Здесь мы привязали событие click к document. Вы можете выбрать элемент, который ближе (для повышения производительности), если вы того пожелаете.

Вот ссылка на документацию для .on()

В качестве примечания: в jQuery 1.9+ несколько функций были удалены. Одна из них — функция .live(), которая была заменена методом .on() (как показано выше). Вот почему это не сработало. Кроме того, console расскажет вам об этом. Многие современные браузеры поставляются со своими собственными web inspector, в противном случае вы можете выполнить поиск в Google для своего браузера и найти альтернативу.

person Ohgodwhy    schedule 06.04.2013