开发者

JQuery DataTables - How to apply functions to all rows (not just the first 10 shown)

开发者 https://www.devze.com 2023-04-12 08:49 出处:网络
I am using the JQuery DataTables plugin for displaying large sets of data. One thing I am trying to do is shorten the \'details\' column (sometimes they are around 1000 characters) to a small string s

I am using the JQuery DataTables plugin for displaying large sets of data. One thing I am trying to do is shorten the 'details' column (sometimes they are around 1000 characters) to a small string so that the rows are all fairly the same height and easier t开发者_如何学Pythono read. Then when a user clicks on the small string, it opens a dialog and displays the full details.

It works great, but only on the first 10 rows (since those are all that is shown by default). Once I expand the table to display the rest of the rows, the function doesnt seem to be applied to those newly shown rows. Is there a call or option in dataTables that will apply the function everytime the row set being shown is changed?

Here is the dataTables call:

    $('#dataTable').dataTable({
    "bJQueryUI": true,
    "sPaginationType": "full_numbers",
    "fnInitComplete": function(){
        $('.display_results').show();
        $('.def').click(function(){
            var msg = $(this).next().text();
            $('.messages').messageBox();//Custom Dialog box call

        });
    }
});


Figured it out! http://datatables.net/usage/callbacks use 'fnDrawCallback'

    $('#dataTable').dataTable({
    "bJQueryUI": true,
    "sPaginationType": "full_numbers",
    "fnInitComplete": function(){
        $('.display_results').show();
    },
    "fnDrawCallback": function() {
        $('.def').click(function(){
            var msg = $(this).next().text();
            $('.messages').messageBox()//Custom Dialog
        });
    }
})


I guess you could use "fnDrawCallback" property while declaring the "DataTable" as we have used in our recent project.


Its best to use live events for this kind of thing: http://datatables.net/faqs#events . Ideally the messageBox plug-in could be modified to use live events.

Allan


Actually what you should had done is:

$(".def").live('click', function() {
//your code here
});
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号