问题
有没有办法以编程方式只检索符合某些特定条件的行 - 例如具有特定索引的行?
API有一个方法 - rows()
,可以通过提供selector-modifier
参数来稍微操作结果。但是,使用它我最多可以使用当前表搜索,而不是自定义表。
问题
为了更好地理解,我将提供有关我想要实现的更多细节。
我正在使用Select extension。我想使用外部触发器一次选择一些行。现在我这样做:
myTable.rows().every(function () {
// ...
// Check if the row should be selected and if so:
this.select();
// ...
});
但是,这会导致在表上触发与所选行数相同数量的select
事件。我有一个绑定到此事件的处理程序,它根据所选行执行对外部API的请求。由于我无法辨别哪个select
是最后一个,因为事件的数量,我的处理程序最终会不必要地向外部API发送垃圾邮件。
解决方案
rows().select()
。我认为这是最好的解决方案,因为select
事件只会被触发一次。但是,我不知道该怎么做 - 因此这个问题。
我想到了两个hacky解决方案,我将其作为最后的手段使用:
根本不使用avent处理程序,只需在rows().every()
循环后调用API - 我仍然需要使用处理程序来处理手动行选择,但这可能会。
遍历行两次 - 第一次检查哪一行是最后一行,然后禁用处理程序,执行第二次循环,实际选择行,并在选择最后一行之前启用处理程序
我希望整个问题不会太混乱。要清楚 - 我想找到答案的是顶部的问题,用斜体字表示。
答案 0 :(得分:1)
selector-modifier仅适用于您选择所有行的情况。它不是由选择器限制行。为此你可以使用行选择器,它更加灵活:
https://datatables.net/reference/type/row-selector
该页面上有几个示例,所以我不会在这里查看选项。
正如您所建议的那样,如果您使用此选择器然后在返回的行集上调用.select(),则回调将仅触发一次。