2015-05-31 2 views
0

Я использую jQuery DataTables, и у меня есть таблица, которая создается с использованием цикла foreach. В каждой сгенерированной строке 2 кнопки создаются с другим номером, добавленным к атрибуту data.Почему обработчик события не работает после сортировки таблицы

После того, как страница загружается, dataTables загружает и отображает таблицу. У меня есть обработчик onClick, который реагирует на кнопки при нажатии.

Однако, когда я сортирую столбцы таблицы, которые могут выполнять dataTables, кнопки просто не отвечают на обработчик onClick.

Что я могу сделать, чтобы предотвратить повреждение dataTables, чтобы кнопки ничего не делали при использовании любого из столбцов сортировки?

+0

Это происходит во всех браузерах? – Shaun

ответ

0

Не используйте $('.button').click, потому что эти кнопки воссозданы при сортировке, вместо этого использовать on события Jquery

$(document).on('click', '.button',function(){ 
    //your code 
}); 
+0

Это не работает. Я хотел бы упомянуть, что я внес большой вклад в мой код. Вместо текущего foreach все содержимое строки таблицы генерируется с использованием параметра ajax для DataTable. Код ajax PHP генерирует HTML-кнопки, которые загружаются в таблицу. – TechKat

+0

нет способа, чтобы этот код не работал, используйте ваш селектор, например. если ваши кнопки получили класс «тест», а затем «.button 'add' .test ' –

+0

Ваш код неверен, потому что функция jQuery [on()] (http://api.jquery.com/on/) требует параметров в следующий порядок: событие, селектор, обработчик. Помимо прикрепления события к элементу 'document' является склонным к ошибкам, лучше сузить его до тела таблицы, например' $ ('# example tbody') '. –

0

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

Ниже приведен пример кода, который нужно обновить, чтобы соответствовать вашей структуры:

$('#example tbody').on('click', '.button', function(e){ 
    // your code 
}); 

Заменить example с ID атрибута вашей таблицы и заменить .button с соответствующим селектором CSS для ваших кнопок.

Для получения дополнительной информации см. jQuery DataTables – Why click event handler does not work.

Смежные вопросы