8

我正在尝试在页面上输出一些内联 js。我真的不想将它添加到任何 JS 文件中,因为它是如此随意且一次性使用。话虽如此,我正在使用 haml 并且还尝试使用 content_for 以便在从布局加载 jquery 后放置 JS。

问题是haml不喜欢缩进的多行文本(我认为)

我正在尝试执行以下操作:

=content_for :javascript do
  $(function(){
    $("#sell_tickets_here").live("vclick",function(){
      if($(this).is("checked"))
        $("#tickets_here").display("inline");
      else
        $("#tickets_here").display("none");
    });
  });

在我的布局中,我有:

  = yield(:javascript)

如果我在 content_for 语句之后只有 1 行,这实际上是有效的。

4

2 回答 2

16

正确的语法是:

- content_for :javascript do
  :javascript
    $(function(){
      $("#sell_tickets_here").live("vclick",function(){
        if($(this).is("checked"))
          $("#tickets_here").display("inline");
        else
          $("#tickets_here").display("none");
      }); 
    });

注意破折号与等号和:javascript HAML 过滤器。只要 HAML 缩进 2 个空格,它就可以很好地处理多行。

然后在您认为的另一部分:

= content_for(:javascript)
于 2011-12-30T01:33:34.060 回答
0

这称为escaping,在这种情况下,您会逃避,呃,缩进:

=content_for :javascript do / $(function(){ / $("#sell_tickets_here").live("vclick",function(){ / if($(this).is("checked")) / $("#tickets_here").display("inline"); / else / $("#tickets_here").display("none"); / }); / });

于 2014-03-12T14:34:04.933 回答