针对用户输入效率进行过滤.还有Stuff
Filtering Against User Input Efficiency.. And Stuff
假设我有一个电视指南的结构:
<div class="day">
<p>A Date</p>
<div class="time">
<p>A Time</p>
<div class="show">
<p>A Show</p>
<div class="info1">
<p>Info 1</p>
</div>
<div class="info2">
<p>Info 2</p>
</div>
<div class="info3">
<p>Info 3</p>
</div>
<div class="info4">
<p>Info 4</p>
</div>
</div>
</div>
</div>
我正在阅读的XML总共有2135次,750次,146天。搜索节目名称的最佳方法是什么?我希望隐藏所有与输入字符串不匹配的节目;如果一个div.time不包含可见的显示(即,该特定div.time下没有与输入字符串匹配的div.show),则该容器也应被隐藏;如果一个div.day不包含输入搜索的结果,则该父级也将被隐藏。
首先让我说,我知道如何通过JS/jQuery提供此功能。然而,我可能不知道最好的方法。我一直在摆弄,当我开始隐藏不包含匹配(可见)显示容器的时间容器时,浏览器中的事情开始变得缓慢/滞后。
我还想指出的是,这种特殊的结构并不局限于我上面所写的内容。如果有更好/更有效的方法来构建指南,请尽一切努力通知我。
一个更普遍的问题是:什么时候开始让服务器处理一些过滤是个好主意?如果客户端上有2000多个节点无法处理,我是否应该通过某种输入询问用户希望查看的天数范围,然后,只将这些节点返回给客户端?
编辑:
search: function(selector, string) {
string = $.trim(string);
$(selector).each(function() {
if ( $(this).children("p").text().search(new RegExp(string, "i")) < 0 ) {
$(this).hide();
}
else {
$(this).show();
}
});
ctv.hideempty(".time");
},
hideempty: function(selector) {
$(selector).each(function () {
if ( $(this).children("div").is(":hidden") ) {
$(this).hide();
}
else {
$(this).show();
}
});
}
是我现在用来过滤的。然而,这正是我一直在玩的东西,可能肯定会有漏洞。
2000+项可能是相当多的记录,需要保存在客户端的内存中,但如果这些信息字段始终很小,则可能是可以管理的。但这可能是次要问题,而且你已经认识到了这个问题的解决方案。
您现在可能面临的更大问题是,听起来您正在DOM中创建2135个show
DIV,以及它们的所有子级,然后尝试动态显示和隐藏它们。这绝对会挑战浏览器,让事情变得缓慢和滞后。
尝试只创建少量的show
DIV,然后根据搜索和筛选结果替换这些DIV的内容。为此,您可以使用类似ejs的模板系统,也可以自己动手。对于大型结果集,只需显示前N个节目,并在用户做某事时加载其他节目(即滚动列表或点击"显示更多结果"按钮)。
- 有可能过滤来自嵌入式YouTube的声音吗
- 为什么我的d3.jsselectAll+过滤器没有过滤
- 为什么$.brower被弃用?还有什么更好的替代方案
- ui网格日期单元格过滤器,过滤日期格式导致显示错误的日期
- Angular:使用选择列表选择过滤代码中的对象
- 在单击时过滤 JSON
- 如何在BookshelfJS中通过加入来过滤结果
- 如何使用javascript过滤复杂的json对象
- 如何应用带过滤器的ng if来过滤记录,并在同一页面中显示两个不同的视图
- 过滤AngularJs中的数据
- 通过API调用过滤数据
- 在函数调用中封装数据除了隐藏数据之外还有什么优点
- 使用angularjs内置过滤器过滤代码中的特定属性
- 如何在重建URL后从URL中传递过滤值,目的是使用Angular2和Typescript实现无限滚动
- 相对于角度控制器中的另一个阵列过滤阵列项目
- 如何在D3.js中绘制地图投影上的点,并使用范围滑块过滤数据
- 使用PHP通过HTML表单选项选择器过滤MYSQL结果
- 尝试过滤“;引号"基于'"类别“;使用流星&mongo
- Angular中的过滤和$http承诺
- 针对用户输入效率进行过滤.还有Stuff