Javascript Datatables jquery插件-通过筛选在多个表中循环

Javascript Datatables jquery插件-通过筛选在多个表中循环,javascript,jquery,html,Javascript,Jquery,Html,我有一个动态填充datatables.net中datatables jquery插件的页面 页面上生成了4个表,每个jquery调用都由.执行。我已经设置了一个数组来保存这些数据表: oTable[x]. 数据填满数据表后,我必须通过调用以下函数来实例化筛选: oTable[x].fnFilter("^" + $(this).val() + "$", 8, true); 我有一个计数器,每次创建新表时都会计数。我尝试使用for循环来处理过滤,方法是: for (var x = 1; x

我有一个动态填充datatables.net中datatables jquery插件的页面

页面上生成了4个表,每个jquery调用都由.执行。我已经设置了一个数组来保存这些数据表:

oTable[x].  
数据填满数据表后,我必须通过调用以下函数来实例化筛选:

oTable[x].fnFilter("^" + $(this).val() + "$", 8, true);
我有一个计数器,每次创建新表时都会计数。我尝试使用for循环来处理过滤,方法是:

 for (var x = 1; x < counter; x++) {
    $("#selectMetricImperial" + x).live('change', function () { oTable[x].fnFilter("^" + $(this).val() + "$", 8, true); });
  } 
我希望能够基于在每个创建数据表的循环末尾传入的计数器动态地生成上述代码。例如,如果计数器=5,则将生成上述语句中的5条,以便对每个下拉菜单进行过滤

我希望我能正确地解释这一点。如果没有,请提问,我将调整我的问题,以更好地解决我的问题


谢谢你们的帮助,伙计们

我建议您使用类选择器。对于每个select,添加一个类,比如“selectchange”

然后只使用一个选择器,而不是循环:

$(".selectchange").on("change", 
    function() 
    { 
        var id = this.id.substring("selectMetricImperial".length);
        alert(id);
        alert($(this).val());
        oTable[id].fnFilter("^" + $(this).val() + "$", 8, true);
    }
);
请参阅此JSFIDLE:

如果您想让它按您的方式工作,您需要将“x”作为参数传入:

for (var x = 1; x < counter; x++) {
    $("#selectMetricImperial" + x).live('change', x, 
        function (e) { oTable[e.data].fnFilter("^" + $(this).val() + "$", 8, true); });
  }
for(变量x=1;x
在原始代码中,在内联函数中使用x,但当执行该函数时,x的值未知(它可能是for循环退出时的值,除非在其他地方使用x)。我知道这可能会让人困惑,但使用内联函数时必须小心。代码
$(“#selectMetricImperial”+x)
知道x是什么。但是,只有在触发change事件时,才调用内部函数,此时x可以是任何东西


bqb

谢谢你的精彩解释。这是非常翔实和简洁的。你救了我!
for (var x = 1; x < counter; x++) {
    $("#selectMetricImperial" + x).live('change', x, 
        function (e) { oTable[e.data].fnFilter("^" + $(this).val() + "$", 8, true); });
  }