使用jQuery .append()将div插入表格单元格

时间:2012-01-24 22:47:42

标签: jquery

我正在尝试使用jQuery在表中创建div。该表表示每个<td>的日历,其ID等于ISO格式的日期字符串。在下面的代码中,我遇到了追加行的问题。它没有向DOM添加任何内容。我已根据单元格的ID检查了tdID值,它们确实匹配。所以我很确定这不是问题。有人可以找到我可能出错的地方吗?

if (loopDate.between(past, future)) {
   var tdID = loopDate.toISOString();
   $("#" + tdID).append("<div class=&quot Event &quot>" 
                   + data.events[i].Est + "</div>");
}

编辑---这是我的html示例。 “d”是我添加到ID开头的字符,用于解决@Matt Stauffer提到的问题。

<td id="d2012-02-01T05:00:00.000Z">1</td>

6 个答案:

答案 0 :(得分:3)

不要使用&quot;你需要一个词汇" 您需要通过编写\"来Javascript转义字符串文字。

答案 1 :(得分:2)

ID无法以数字开头,我相信ISO格式的日期会以数字开头,因此您使用的是无效ID。

另外,正如其他人提到的那样,

"<div class=&quot Event &quot>"

应该是

"<div class=\"Event\">"

答案 2 :(得分:2)

现在我看到了你的id,虽然它作为id属性的命名约定和HTML一样有效,其中:

  

ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(“ - ”),下划线(“ _“),冒号(”:“)和句号(”。“)。

你的情况下的问题是使用点(。)和冒号(。),就像使用jquery选择器时一样,点(。)被解释为searching for a class or subclass和冒号(:) as searching for :first, :last etc

要解决您的问题,您可以尝试将这些字符替换为不需要的字符(_)或连字符( - ),这应该没问题。

您可以查看over here at this jsFiddle

答案 3 :(得分:1)

您在追加功能中使用了转义的HTML实体,因此您需要更改:

"<div class=&quot Event &quot>"

为:

"<div class='event'>"...
// or
"<div class=\"event\">"...

答案 4 :(得分:1)

或者,您可以使用

var div = document.createElement('div');
$(div).addClass("Event");
$(div).append(data.events[i].Est);
$("#" + tdID).append(div);

- 更清洁的编码类型......

答案 5 :(得分:0)

if (loopDate.between(past, future)) {
  var tdID = loopDate.toISOString();
  var tdDiv = document.createElement('div');
  tdDiv.addClass("Event");
  tdDiv.html(data.events[i].Est);
  $("#" + tdID).html(tdDiv);
}