jquery - 自定义 jQuery 过滤器需要优化

标签 jquery performance filter

在下面的代码中,friendBlocks 有 800 多个项目,如下所示:

<div class='block'>
    <span class='title'>Some Name</span>
    <img src='some.img' />
</div>

我正在尝试使用下面的代码来过滤它们。它可以工作,但速度非常慢,有时会使浏览器崩溃。

friendBlocks = friendform.find('.block');
filterFriends = function(text) {
    friendBlocks.each(function() {
        var block;
        block = $(this);
        if (block.children('.title').text().toLowerCase().indexOf(text) >= 0) {
            block.show();
        } else {
            block.hide();
        }
    });
};

有什么方法可以优化它并更有效地进行搜索吗?

最佳答案

不要对每个项目实时应用操作!克隆包含 block div 的节点,执行操作,然后替换原始 DOM。

类似的东西(未经测试,只是示例):

friendform   = $('#container').clone();
friendBlocks = friendform.find('.block');
filterFriends = function(text) {
    friendBlocks.each(function() {
        var block;
        block = $(this);
        if (block.children('.title').text().toLowerCase().indexOf(text) >= 0) {
            block.show();
        } else {
            block.hide();
        }
    });
};
$('#container').replaceWith(friendform);

关于jquery - 自定义 jQuery 过滤器需要优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6942829/

相关文章:

javascript - 哪些 jQuery 插件应该合并到 jQuery 或 jQueryUI 中

javascript - 如何使用JSONP、Ajax和jquery读取数据?

谷歌 Go 的表现如何?

performance - 在特定 URL 上加载自定义字体

Symfony2 : use translator in a twig filter extension

python - Django get_object_or_404 或过滤器存在

javascript - 如何使 Span 类在触发之前不可见?

javascript - 没有 tbody 和 th block 的 jquery tablesorter 用法

java - 当只关心几种算法的相对性能时,强制 Java 从不 JIT 编译我的方法会更好吗?

ruby-on-rails - 从 Active Admin 过滤器向 Ransack 发送参数