【问题标题】:Conditionally adding tables to the dom using coffescript使用 coffeescript 有条件地将表添加到 dom
【发布时间】:2013-03-31 02:18:05
【问题描述】:

我有一些包含事件对象数组的 json,每个事件都有一个日期和一个名称。 在coffeescript中,我想遍历json,检查每个对象是否已经在页面上有一个表,其id与事件日期相同;如果是,则将事件名称添加到具有相同事件日期的表中,如果没有,则创建一个以事件日期为 id 的新表并将名称添加到表中。

我不知道为什么我不能让它工作,即使不考虑将事件名称添加为表格数据,我的代码也会为每个事件创建一个表格,而不是每个日期只创建一个表格。

for event,i in events
  date = event["date"]
  if $("table ##{date.replace(/\s+/g, '')}").length is 0
  table = "<table id='#{date.replace(/\s+/g, '')}'>
    <thead><tr><th>#{date}</th></tr></thead>
    <tbody></tbody></table>"
    $('#matches').append table

我遍历 events 数组,检查是否有一个 id 与当前项目的日期相同的表,如果没有,则创建表并将其添加到页面中,但这会为每个项目添加一个表!

【问题讨论】:

    标签: javascript jquery coffeescript html-table


    【解决方案1】:

    选择器中的空格将查找元素的后代 ID,而不是元素本身。

    没有看到 html 和数组示例很难进一步提供帮助,但如果您有 &lt;table id="someval"&gt; 并想要检查该 id,则选择器肯定会出现问题。

    由于页面中的 ID 在定义上必须是唯一的,因此仅在选择器中使用 ID 实际上更有效。 ID 搜索是最快的 DOM 搜索。

    我也没有很好地阅读coffee。不确定双 ## 是什么。输出应该只有一个#,并且选择器的输出中不应该有任何{}

    【讨论】:

    • 不敢相信这么简单!!第一个 # 用于创建 id,第二个 #{} 用于字符串插值。
    • 好的..我想了很多,但只是为了确定而添加了这些 cmets。有助于将来发布浏览器源代码......因为大多数人更容易阅读(和测试),你总是可以将编辑逆向工程回到咖啡中
    猜你喜欢
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 2014-03-18
    • 2021-06-13
    • 1970-01-01
    • 2019-02-03
    相关资源
    最近更新 更多