2015-12-21 4 views
1

Я борюсь с функцией, где я хотел бы включать/отключать данные в поле с помощью jQuery.Datatables toggle with checkbox

Это действительно работает, если у меня нет данных, определенных, тогда я включаю/выключаю без проблем.

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

У меня есть что-то вроде этого:

$('#datatable-switch').on('click',function(){ 

    if($(this).attr('data-click-state') == 0) { 

    $(this).attr('data-click-state', 1); 
    showLockersDataTable(); 

    } else { 

    $(this).attr('data-click-state', 0) 
    lockersTable.DataTable().destroy(); 
    } 

}); 
+0

Таблицы данных [не могут быть инициированы дважды] (https://datatables.net/manual/tech-notes/3), что может вызвать вашу проблему. –

+0

@Tarekis в соответствии с [документацией] (https://datatables.net/manual/tech-notes/3#destroy) вы можете использовать 'destroy()' для уничтожения старой таблицы перед повторной инициализацией новой. –

+0

Вы можете показать свою первую инициализацию ?? где showLockersDataTable? – Vanojx1

ответ

1

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

showLockersDataTable(); 

и

lockersTable.DataTable().destroy(); 

я не могу проанализировать, как вы не предоставили ни showLockersDataTable() ни lockersTable.

Но вы должны просто решить, как это:

// Get the jQuery Object for your DataTable 
var example = $('#example'); 

// Bind listener on the checkbox 
$('#datatable-switch').on('click',function(){ 

if($(this).attr('data-click-state') == 0) { 

     $(this).attr('data-click-state', 1); 
     showDataTable(example); 

    } 
    else { 

     $(this).attr('data-click-state', 0) 
     hideDataTable(example); 
    } 
}); 

где две используемые функции:

// Declare show and hide functions 
function showDataTable(dataTable){ 

    dataTable.DataTable(); 

} 

function hideDataTable(dataTable){ 

    dataTable.DataTable().destroy(); 

} 

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

showDataTable(); 

А вот working example на JSFiddle.

+0

Большое спасибо! Это прекрасно работает. Я был довольно близок, у меня также была проблема с флажком (неправильное inital data-click-state). Thx снова. –