在JavaScript中将给定代码重写为函数的最佳方法是什么?

时间:2013-07-11 15:49:29

标签: javascript ruby-on-rails ujs

我需要自动重写一个触发函数的链接(即时编写)并将其转换为不引人注目的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)传递,以便将其称为函数。

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

1 个答案:

答案 0 :(得分:0)

这是正常的做法。

<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");
  });
)