使用单个列过滤器 + searchHighlight 选项时,存在与 DT 过滤相关的问题。
重现步骤:
library(DT)
df <- data.frame(
test_chr = paste0('test', 1:10)
)
datatable(
df,
filter = "top",
options = list(
searchHighlight = TRUE
)
)
在
tst_chr单独的列过滤器中键入
test1
;
通过删除搜索查询或单击清除按钮来取消搜索;
单词
test
几乎在所有行中都消失了。
这是一个解决方案。使用这个
callback
,这有效:
library(DT)
df <- data.frame(
test_chr = paste0('test', 1:10)
)
datatable(
df,
filter = "top",
options = list(
searchHighlight = TRUE
),
callback = JS(
"table.on( 'draw', function() {
var body = $( table.table().body() );
body.unhighlight();
body.highlight( table.search() );
} );
"
)
)