2016-03-04 37 views
0

我正在使用jQuery DataTables插件。我试图给我的表分配一个参数,稍后在自定义搜索中使用该参数。然而,我不知道如何存储和获取该参数,并且在我的自定义搜索中,我不知道如何获取表格对象。这里是我的代码给的什么,我试图做一个更加清晰的思路:将自定义变量添加到jquery数据表中并在搜索过滤器中读入

jQuery.fn.dataTable.ext.search.push(
    function(settings, data, dataIndex) { 
     var myParam = ....; 
     console.log('i said: '+ myParam) 
     return true; 
    } 
); 

var table = jQuery('#myTable').DataTable(); 
table.myParam = 'hello'; 
table.draw(); 

回答

2
  • 使用全局变量:

    var myParam = ''; 
    
    jQuery.fn.dataTable.ext.search.push(
        function(settings, data, dataIndex) { 
         console.log('i said: '+ myParam) 
         return true; 
        } 
    ); 
    
    var table = jQuery('#myTable').DataTable(); 
    myParam = 'hello'; 
    table.draw(); 
    
  • 使用data-属性:

    jQuery.fn.dataTable.ext.search.push(
        function(settings, data, dataIndex) { 
         var table = new jQuery.fn.dataTable.Api(settings); 
         var myParam = jQuery(table.table().node()).data('myParam'); 
    
         console.log('i said: '+ myParam) 
         return true; 
        } 
    ); 
    
    var table = jQuery('#myTable').DataTable(); 
    jQuery(table.table().node()).data('myParam', 'hello'); 
    table.draw(); 
    
+0

感谢您的回答。数据()似乎是一个好主意,但它意味着每行检查一个新的对象将被创建。你知道这是否会对性能产生影响,以及如何解决这个问题?我试图避免全局性。 – user4493177

+0

@ user4493177,很显然,使用'data-'属性方法有几个额外的函数将在循环中调用。我不确定这将如何影响性能,这取决于表的大小。 –