datatable: нажмите на строку, линия не закроется

0

У меня есть строка, которую я определил так:

  oTable = $('#archivio').dataTable({
    "bPaginate": false,
    "bInfo": false,
    "bAutoWidth": true,
    "sScrollY": 440,
    "bScrollCollapse": true,
    "sDom": '<"top"f>rt',
    "fnDrawCallback": function () {
        $('#archivio tbody tr').hover(function () {
            $(this).css('cursor', 'pointer');
        }, function () {
            $(this).css('cursor', 'auto');
        });
    }
});

и я определил функцию, чтобы щелкнуть по строке, которая открывает или закрывает ее информативную часть:

$("#archivio tbody tr").click(function (e) {              

    var nTr = $(this)[0];
    var aData = oTable.fnGetData(nTr);

    $(oTable.fnGetNodes()).each(function () {      
        var nTr1 = $(this)[0];                          
        var aData1 = oTable.fnGetData(nTr1); 
        if (aData[1] != aData1[1]) {                     
            $(this).removeClass('active');            
            oTable.fnClose(this);
        }
    });

    if ($(this).hasClass('active')) {               
        $(this).removeClass('active');           

        var nTr = $(this)[0];                      
        oTable.fnClose(nTr);

    } else {                                        
        oTable.$('tr.row_selected').removeClass('active');      
        $(this).addClass('active');    

        var sOut = '<p><span class="badge"><i class="fa fa-calendar-o"></i> ' + DataV + '</span> <span class="badge"><i class="fa fa-clock-o">' +
                   '</i> ' + OraV + '</span> <span class="badge"><i class="fa fa-tachometer"></i> ' + VelocitaV + ' km/h</span>' + 
                   '<a href="javascript:init(' + stringa + ')" class="btn btn-default btn-xs" style="float:right;">' + 
                   '<i class="fa fa-external-link"></i> Apri mezzo</a></p>' + '<span class="text-muted" id="Indirizzo' + aData[1] + '"></span>'
        oTable.fnOpen(nTr, sOut, 'details');  

});

Проблема в том, что когда я нажимаю второй раз на линии, а затем закрываю ее, она не закрывается! Я заметил, что при отладке функция повторяется n раз, т.е. сколько раз я переработал страницу, поэтому, если я переработал страницу дважды, процедура повторяется дважды, если я переработаю страницу, повторяется три раза в три pre- раз и прочее. Как будто я нажимаю на другую строку, первая закрывает и снова открывает другую.

Как запустить процедуру закрытия строки, чтобы щелкнуть второй раз?

  • 0
    Что такое "sDom": '<"top"f>rt',
  • 0
    Просто догадка, но работает ли это, если вы используете делегирование событий? $("#archivio tbody").on('click', 'tr', function (e) {
Показать ещё 2 комментария
Теги:

1 ответ

0

Проблема в том, что я определил функцию в одну, которая рисовала таблицу, и поэтому вызывалась все время, когда вызывалась функция. Поэтому я определил переменную и сделал первоначальную проверку:

if ((states == null) | | (states == '')) {states = $ ("#archive tbody"). on ('click', 'tr', function (e) {

Спасибо вам всем. Дейв

Ещё вопросы

Сообщество Overcoder
Наверх
Меню