【问题标题】:Getting element by ID in coffeescript在咖啡脚本中通过 ID 获取元素
【发布时间】:2015-01-12 20:30:59
【问题描述】:

我正在尝试创建一个 HTML 小部件:

HTML:

<div>
    <h1 class="title" data-bind="title">Title</h1>

    <div>
        <h1 id = "dc1" class="dc">DC1</h1>
    </div>
    <div>
        <h1 id = "dc2" class="dc">DC2</h1>
    </div>

    <p class="updated-at" data-bind="updatedAtMessage"></p>
</div>

而且我需要能够在 CoffeeScript 中动态设置 id="dc1"id="dc2" 元素的背景颜色。我打算通过添加一个具有背景颜色设置的类来做到这一点:

SCSS:

&.up {
    background-color: green;
}

&.down {
    background-color: red;
}

.dc {
    background-color: orange;
    font-size: 30px;
    float: left;
    width: 50%;
}

到目前为止,我已经设法设置了整个小部件背景,但没有设置上面提到的子元素: 我一直在使用:

CoffeeScript:

$(@node).removeClass('up down')
$('#dc1').removeClass('up down')
$('#dc2').removeClass('up down')

$(@node).addClass('down')
$('#dc1').addClass('down')
$('#dc2').addClass('up')

请注意,最终我将根据一些数据添加类,而不是将它们硬编码为咖啡脚本中的“向上”或“向下”。

但是什么都没有发生。我是否正确选择了 id="dc#" 元素?

如果对上下文有帮助,我会为 Dashing 这样做

【问题讨论】:

  • 咖啡脚本中没有$('#dc1').addClass('down') -> $("#dc1").addClass "down"?
  • 我看不出你的 CoffeScript 有什么问题,问题肯定出在其他地方
  • @Vucko 括号在 CoffeeScript 中通常是可选的,但是很多人(包括我)把它们放进去以使代码更清晰。单引号对 CoffeeScript 中的字符串也有效,双引号也有效,但它们支持字符串插值,所以很多人(包括我)坚持使用单引号,除非他们特别想使用插值。

标签: html css coffeescript sass dashing


【解决方案1】:

您的 SCSS 没有意义,所以我猜您错过了 SCSS 到 CSS 转换的错误。 SCSS 中的&amp;reference to the parent selector

&amp; 将被替换为父选择器,因为它出现在 CSS 中

所以在顶层设置&amp;.up 没有意义,应该会产生错误。如果我们修复 SCSS 以使 .up.down 仅适用于 .dc

.dc {
    /* ... */
    &.up {
        background-color: green;
    }
    &.down {
        background-color: red;
    }
}

然后一切似乎都很好。

演示:http://jsfiddle.net/ambiguous/9y9uywm9/

您可以使用Sassmeister(和其他类似的在线工具)查看 SCSS 对您的原始 SCSS 的看法。

【讨论】:

  • 谢谢,我从来没有注意到这一点,你知道我可以使用哪些好的 scss 验证器来指出这一点吗?
  • 我认为任何 SCSS 到 CSS 转换器都会抱怨错误。 sass-lang.com/install上列出了一些工具
猜你喜欢
  • 1970-01-01
  • 2013-05-29
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多