在HAML中动态生成的Javascript
Dynamically-generated Javascript within HAML
为什么不起作用?
:javascript
-[1,2,3].each do |number|
$("#form_#{number}").my_method();
Rails给了我一个错误,说变量number
没有定义。
过滤器的内容不会被解释为Haml。不过,您可以使用#{...}
进行插值,这就是您看到错误的原因——过滤器在"#form_#{number}"
中看到#{number}
,但上面定义number
的行只是按原样通过,而不是按Ruby处理,因此就Ruby而言,number
仍然未定义。
在这种情况下,你可以做一些类似的事情:
:javascript
#{[1,2,3].map do |number|
"$('"#form_#{number}'").my_method();"
end.join("'n")}
尽管这有点笨拙。
一个更清晰的解决方案可能是创建一个助手方法来创建javascript,您可以从过滤器调用:
def create_js(arr)
arr.map do |number|
"$('"#form_#{number}'").my_method();"
end.join("'n")
end
Haml将是
:javascript
#{create_js([1,2,3])}
您的javascript中有ruby语法,这显然是行不通的。您可以使用underscore.js这样的库,并像这样迭代您的数组:
_.each([1, 2, 3], function(number){
$("#form_" + number).my_method();
});
试试看。
或者你可以使用jQuery的each:
$.each([1, 2, 3], function(i, number){
$("#form_" + number).my_method();
});
相关文章:
- 如何使Javascript动态html表及其上的事件
- 使用JavaScript动态插入DIV的成本有多高
- Javascript动态变量(添加了随机数)
- JavaScript-动态SVG-onload属性-未触发事件
- 传递给 PHP 表单时 JavaScript 动态变量上的未定义索引
- 如何在没有ajax的情况下将javascript动态数据发送到php变量
- 使用javascript动态创建html内容/元素
- 带有多个答案选项的Javascript动态数组窗口
- JavaScript:动态扩展原型是一种糟糕的做法
- Javascript+动态菜单+当前链接样式(CSS)+基于PHP的网站
- javascript动态内容与选择长运行脚本
- Javascript:动态更改CSS文件+Cookie
- 使用javascript动态计算top属性
- 使用javascript动态选择幻灯片放映的图像
- 如何访问用javascript动态生成的textarea的文本内容
- Javascript动态表,每个单元格都有一个onmouse事件
- Php,Javascript-动态表单id's和动态验证
- JavaScript动态附加到搜索字段
- 如何将CSRF令牌添加到javascript动态生成的表单中
- 从Javascript动态构建JSON对象列表