JQuery 3.6.0 没有找到过滤事件?
JQuery 3.6.0 filter events for nothing found?
在下面的一小段代码中。当过滤器 returns 什么都没有时,我试图隐藏微调器。当 filter returns 最后调用 hide() 函数时它起作用但是当 filter returns 什么都没有时,我无法弄清楚在 filter returns 时隐藏微调器的位置没有
var $rows = $(TableName + ' tr').not('thead tr');
$('#FilterSpinner').show();
$rows.show().filter(function () {
text = $(this).text().replace(/\s+/g, ' ');
return !reg.test(text);
}).hide('fast', function () {
$('#FilterSpinner').hide(); // Works fine
});
我不介意使用不同的过滤方式,以便在过滤开始时显示微调器,并在过滤完成时隐藏微调器,无论是什么都没有还是什么都没有。
如果我没理解错的话,你想要:
- 显示所有行;
- 查找符合某些过滤条件的行;
- 隐藏符合过滤器的那些;
- 完成后隐藏微调器,确保等到上一步完成;
您已完成 AFAICT 的 90% - 也许您正在寻找更聪明的解决方案,但只需将代码拆分一下就可以轻松实现。这样的事情怎么样:
// 1. Show all rows
$rows.show();
// 2. Find matches
var $filtered = $rows.filter(function () {
text = $(this).text().replace(/\s+/g, ' ');
return !reg.test(text);
});
// 3. Hide any matches, then hide the spinner
if ($filtered.length) {
$filtered.hide('fast', function () {
$('#FilterSpinner').hide();
});
} else {
// ... or simply hide the spinner if there are no matches
$('#FilterSpinner').hide();
}
旁注 - 您还可以缓存微调器选择器,就像您已经在处理其他变量一样:
var $spinner = $('#FilterSpinner');
...
$spinner.hide();
在下面的一小段代码中。当过滤器 returns 什么都没有时,我试图隐藏微调器。当 filter returns 最后调用 hide() 函数时它起作用但是当 filter returns 什么都没有时,我无法弄清楚在 filter returns 时隐藏微调器的位置没有
var $rows = $(TableName + ' tr').not('thead tr');
$('#FilterSpinner').show();
$rows.show().filter(function () {
text = $(this).text().replace(/\s+/g, ' ');
return !reg.test(text);
}).hide('fast', function () {
$('#FilterSpinner').hide(); // Works fine
});
我不介意使用不同的过滤方式,以便在过滤开始时显示微调器,并在过滤完成时隐藏微调器,无论是什么都没有还是什么都没有。
如果我没理解错的话,你想要:
- 显示所有行;
- 查找符合某些过滤条件的行;
- 隐藏符合过滤器的那些;
- 完成后隐藏微调器,确保等到上一步完成;
您已完成 AFAICT 的 90% - 也许您正在寻找更聪明的解决方案,但只需将代码拆分一下就可以轻松实现。这样的事情怎么样:
// 1. Show all rows
$rows.show();
// 2. Find matches
var $filtered = $rows.filter(function () {
text = $(this).text().replace(/\s+/g, ' ');
return !reg.test(text);
});
// 3. Hide any matches, then hide the spinner
if ($filtered.length) {
$filtered.hide('fast', function () {
$('#FilterSpinner').hide();
});
} else {
// ... or simply hide the spinner if there are no matches
$('#FilterSpinner').hide();
}
旁注 - 您还可以缓存微调器选择器,就像您已经在处理其他变量一样:
var $spinner = $('#FilterSpinner');
...
$spinner.hide();