【问题标题】:Trying to understand Railscast episode 197 (related to previous post: #17094200)试图理解 Railscast 第 197 集(与上一篇文章相关:#17094200)
【发布时间】:2013-06-14 21:22:14
【问题描述】:

我正在尝试为我的页面使用此功能,但我需要了解正则表达式替换。谁能帮我分析一下?

function add_fields(link, association, content) {
    var new_id = new Date().getTime();
    var regexp = new RegExp("new_" + association, "g")
    $(link).parent().before(content.replace(regexp, new_id));
}

我了解第一行 (var new_id = ...) 以及为什么需要它,但是第二行是做什么的,id 替换是如何工作的?

我问是因为在我的应用程序中,当单击“add_new_row”时,新行会插入到我的页面顶部,而不是它所属的表中。

感谢您提供的任何帮助。

【问题讨论】:

    标签: javascript jquery regex ruby-on-rails-3 railscasts


    【解决方案1】:

    线

        var regexp = new RegExp("new_" + association, "g")
    

    只需创建一个RegExp 对象,它代表一个可匹配的模式。 (在内部,它“编译”模式,例如,如果它被重复匹配,它会提前完成它需要做的所有事情,以便后续使用更有效率。)@987654323 @ 是代表“全局”的标志,意思是“替换所有匹配项”。我不确定association 是什么,但该模式将匹配"new_<association>"

    下一行

    $(link).parent().before(content.replace(regexp, new_id));
    

    使 使用 模式:用生成的唯一的、基于日期时间的 id 替换上述模式的所有实例。最后,内容通过before 放置在其所有兄弟节点之前。

    【讨论】:

    • 谢谢安德鲁 - 这有帮助。 “关联”变量是我的子模型的名称——例如,我可能有一个订单模型,它可能有许多“行项目”——在这种情况下,关联将是一个包含名称“行项目”的字符串.我还需要将下一行更改为:
    • $(".DataRow").after(content.replace(regexp, new_id));这会将插入的行放在我的最后一个数据行之后。现在这部分正在按我的预期工作。我仍然需要开发一些 Rails 功能,以便在用户单击链接时而不是在页面加载时使其工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    相关资源
    最近更新 更多