简体   繁体   中英

Jquery datatable click event is not firing for second time

Jquery Click event is firing for first time but on second time it is not triggering.

Datatable:

var tableAttendance = $('#tableAttendance').dataTable ({
        "bDestroy"       : true,
        "bAutoWidth"     : false,
        "bServerSide"    : true,
        "bDeferRender"   : true,
        "sServerMethod"  : "POST",
        "sAjaxSource"    : pageUrl (),
        "sAjaxDataProp"  : "aaData",
        "aaSorting"      : [[2, 'desc']],
        "fnCreatedRow": function( nRow, aData, iDataIndex ) {
            $(nRow).attr({
                "data-toggle":"context",
                "data-target":"#attendance-context-menu"
            });
        },
        "aoColumns"      : [
        {
            "mData" : function (row, type, set) {
                return '<div>'+ row['Employee_Name'] +'</div>';
            }
        }]
    });

Jquery Event :

    $(document).on('click contextmenu', '#tableAttendance tbody tr', function (e) {
    console.log("Event Triggered");
    var selectRow = $(this);

     if (!selectRow.hasClass('row_selected'))
     {
          selectRow.addClass('row_selected');
     }
     else
     {
          //Other than right click. Because i use multi-select option
          if( e.button !== 2 ) 
             selectRow.removeClass('row_selected');
     }
   });

Working for different row select event. But when i right click(context menu) same row more than once, the event is not triggring

Just tested and your code works for me.

Could you please try to modify your click handler as follows:

$(document).on('click contextmenu', '#dummy tbody tr', function () {
    var d = new Date();
    console.log("Event Triggered" + d.getMilliseconds());
});

If you are debugging with firebug it could well be that you overlooked the number in front of your logged text.

在此处输入图片说明

Messages with the exact same content logged multiple times result in the number being incremented.

Adding milliseconds to the output will slightly modify the message and result in a new line of output.

EDIT:

A right click will result in the value e.button = 2 .

This value is checked in your handler if( e.button !== 2 ) and does not execute selectRow.removeClass('row_selected'); because the result of the check is false .

Completely removing the check for e.button would get your right-click to select and deselect the rows.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM