对于 JavaScript,使用 content_for 时 HAML 具有多行

发布于 2024-12-23 18:50:58 字数 559 浏览 2 评论 0原文

我正在尝试在页面上输出一些内联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 行,那么这实际上是有效的。

I am trying to output some inline js on a page. I don't really want to add it to any JS file since it is so aribtrary and one time use. That being said, I am using haml and also trying to use content_for in order to place the JS after jquery is loaded from the layout.

The problem is that haml does not like multiline text that is indented (I think)

I am trying to do the following:

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

In my layout I have:

  = yield(:javascript)

Which actually works if I only have 1 line after the content_for statement.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

撧情箌佬 2024-12-30 18:50:58

正确的语法是:

- 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 过滤器。只要缩进 2 个空格,HAML 就可以很好地处理多行。

然后在你的观点的另一部分:

= content_for(:javascript)

The correct syntax would be:

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

Notice the dash versus the equal sign and the :javascript HAML filter. HAML works just fine with multi-line as long as it is 2-space indented.

And then in the other part of your view:

= content_for(:javascript)
落花浅忆 2024-12-30 18:50:58

这称为转义,在这种情况下,您会转义,呃,缩进:

=content_for :javascript 做
/ $(函数(){
/ $("#sell_tickets_here").live("vclick",function(){
/ if($(this).is("选中"))
/ $("#tickets_here").display("内联");
/ 别的
/ $("#tickets_here").display("无");
/ });
/ });

This is called escaping, and in this case you escape, ergh, indentation:

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文