【问题标题】:What is the best way to rewrite a given code into a function in JavaScript?在 JavaScript 中将给定代码重写为函数的最佳方法是什么?
【发布时间】:2013-07-11 15:49:29
【问题描述】:

我需要自动重写触发函数的链接(动态编写)并将其转换为不显眼的 JavaScript 代码。

例子:

link_to_function 'hey', "alert('hey')"

变成:

<a href='#' onclick="alert('hey')"> hey </a>

我的想法是在 HTML 元素中进行引用,并在 JS 中创建一个对象来存储所有相关代码。然后将前一个示例转换为更干净且不显眼的示例 示例:

<a href='#' data-href='rndReference'> hey </a>

在 JS 中(code 变量是我从标记中删除的 JS 代码):

storageCode[rndReference] = new Function(code)

每个代码字符串都通过一个新的Function(code) 传递,以便将其作为函数调用。

这种方法有什么问题?什么方法会更好?

【问题讨论】:

    标签: javascript ruby-on-rails ujs


    【解决方案1】:

    这是正常的完成方式。

    <a href='#' onclick="alert('hey')"> hey </a>
    

    变成:

    <a href='#' data-role='alert'> hey </a>
    

    然后在CoffeeScript 文件中:

    $ ->
      $("a[data-role='alert']").on("click", (event) ->
        event.preventDefault()
        alert("hey")
      )
    

    或者,如果你不喜欢 CoffeeScript:

    $(document).ready(function() {
      $("a[data-role='alert']").on("click", function(event) {
        event.preventDefault();
        alert("hey");
      });
    )
    

    【讨论】:

    • 这是正常的方式。我在问如何运行随机代码?这个想法是通过一个助手传递的。并将link_to_function替换为link_to_ujs
    • link_to_ujs 显然不是“不显眼的 javascript”——它是显眼的并且在链接的 onclick 事件上运行。如果这对你有用,那就去吧。
    • link_to_ujs 将代码放入 JavaScript 对象中,并将数据引用放入标记中,并使用代码绑定该数据引用。一直都是ujs。这与问题中的示例完全相同。第二个
    • @gagoar 好的,我现在明白了。建议您删除 cmets,因为它们与您的代码不同步。关于你的方法:每个人都有自己的方法......如果它适合你,那就去吧。
    猜你喜欢
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2015-09-04
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 2013-11-02
    相关资源
    最近更新 更多