javascript - 有没有更好和/或更快的方法来执行这个正则表达式?

标签 javascript jquery regex

我需要每 500 毫秒运行一次此命令,但运行一次就足以滞后。是否有解决方案可以提高性能,同时函数仍然做同样的事情?

$('#current-update > div.update-content > ol:nth-child(4) > li > div.info > p').each(function() {
    var matchthis = $(this).text().match(/\*(.*?)\*/g);
    if (matchthis) {
        var replacethis = $(this).html().replace(/\*(.*?)\*/g, "<strong>$1</strong>")
        $(this).replaceWith('<p data-bind="html: parsedBody" class="body">' + replacethis + "</p>")
    }
});

最佳答案

由于正则表达式,它并不慢。它很慢,因为在代码中的某个地方,我怀疑这些段落标签每 500 毫秒动态更新一次,其中包含注释,然后您将逐一迭代它们以更改值。

关于操作 dom 的第一条规则 - 一次不要多次操作 dom。由于新涌入的 Angular、bootstrap、buildscript、数据绑定(bind)、jquery 开发人员尚未了解流畅 Web 交互的重要性,这一点经常被忽视。

每次使用 jquery 选择器读取 dom 时 - $('#getThis') 都会花费渲染时间。每次在 dom 上渲染某些内容时 - $('#getThis').html('add this') 都会花费渲染时间。在迭代中组合这两个操作会成倍增加这一点,特别是如果您在计时器上执行此操作。

现在你得到的结果很慢,不是因为正则表达式,而是因为多个 dom 操作,以及在每次迭代时重新读取 dom。

重新思考您的架构。它不会比这更快,除非你读取整个 html block ,使用正则表达式迭代字符串,然后一次性写入 dom。

祝你好运

关于javascript - 有没有更好和/或更快的方法来执行这个正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32380982/

相关文章:

javascript - 将字符串中的 '\' 替换为 '-'

javascript - 如果子 div 为空,则删除父 div

jquery - 使用 jquery 在外部样式表中插入 css

javascript - 使 jQuery 顶部工具栏不那么跳动

javascript - jquery tokeninput 不在 h :inputtext while editing 上显示数据

php - Preg_match_all - </h2> 标记后的第 2 个段落

javascript - 添加 2 层深度的原型(prototype)链

javascript - jQuery 选择器查找包含具有特定值的 TD INPUT 的 TR

java - 如何剪切字符串中的关键字(Java)?

regex - Go中的http Get请求(获取几行)