Javascript 如何放置<;部门>;及</部门>;在使用append()的内容块之前和之后?

Javascript 如何放置<;部门>;及</部门>;在使用append()的内容块之前和之后?,javascript,jquery,html,Javascript,Jquery,Html,所以我要做的是通过先追加,然后追加内容,最后追加来添加一个外部div容器。但结果似乎是,我在开始时添加的通过自动插入一个。结果在两个单独的div中 有人吗?谢谢 //adds the outer div tag here... $('#aspcal tr:eq(' + loopweek + ') td:eq(' + loopday + ')') .append("<div id='outer' style='height:15px'>"); //adds the inne

所以我要做的是通过先追加,然后追加内容,最后追加来添加一个外部div容器。但结果似乎是,我在开始时添加的通过自动插入一个。结果在两个单独的div中

有人吗?谢谢

//adds the outer div tag here...
$('#aspcal tr:eq(' + loopweek + ') td:eq(' + loopday + ')')
     .append("<div id='outer' style='height:15px'>");

//adds the inner content here...
 for (l = 0; l < rssArray.length; l++) {

if (eleArray[l][19] == curNumMonth 
     && eleArray[l][20] == curNumDay 
     && eleArray[l][21] == curNumYear) {

    $('#aspcal tr:eq(' + loopweek + ') td:eq(' + loopday + ')')
       .append("</br><div style='height:auto'><b>" 
               + eleArray[l][8] 
               + "</b></br><a href='" 
               + eleArray[l][0] 
               + "' target='_blank'>" 
               + eleArray[l][1] 
               + "</a></div>");
}

//adds the outer div closing tag here...
$('#aspcal tr:eq(' + loopweek + ') td:eq(' + loopday + ')').append("</div>");​
//在此处添加外部div标记。。。
$('#aspcal tr:eq('+loopweek+')td:eq('+loopday+'))
.附加(“”);
//在此处添加内部内容。。。
对于(l=0;l”
+电子阵列[l][8]
+“
”; } //在此处添加外部div结束标记。。。 $(“#aspcal tr:eq(“+loopweek+”)td:eq(“+loopday+”)。追加(“”);​
您不是在用jQuery创建标记,而是在创建DOM对象。
div
由打开和关闭标记以及属性等表示,但被浏览器解析并存储为数据树中的对象。jQuery,最终是javascript,只是告诉浏览器在树中创建一个新对象

您应该创建外部div,然后向其追加内容。jQuery将为您完成这项艰巨的工作

//adds the outer div tag here...
$('#aspcal tr:eq(' + loopweek + ') td:eq(' + loopday + ')').append("<div id='outer' style='height:15px'>");


//adds the inner content here...
for (l = 0; l < rssArray.length; l++) {
    if (eleArray[l][19] == curNumMonth && eleArray[l][20] == curNumDay && eleArray[l][21] == curNumYear) {
        $('#outer').append("</br><div style='height:auto'><b>" + eleArray[l][8] + "</b></br><a href='" + eleArray[l][0] + "' target='_blank'>" + eleArray[l][1] + "</a></div>");
}

如果已经创建了内容,则可以使用
.wrap(“”)
在内容周围添加一个div(或任何其他父对象)。

首先创建
div
对象,将内容附加到该对象,然后将
div
附加到
#aspcal
表中。如下所示:

  //Create the DIV...    
  var myDiv = $("<div id='outer' style='height:15px'></div>");

  //add the inner content...    
  for (l = 0; l < rssArray.length; l++)
       if (eleArray[l][19] == curNumMonth && eleArray[l][20] == curNumDay && eleArray[l][21] == curNumYear) {
          myDiv.append("</br><div style='height:auto'><b>" + eleArray[l][8] + "</b></br><a href='" + eleArray[l][0] + "' target='_blank'>" + eleArray[l][1] + "</a></div>");
       }
  //add the div here...
  $('#aspcal tr:eq(' + loopweek + ') td:eq(' + loopday + ')').append(myDiv);
//创建DIV。。。
var myDiv=$(“”);
//添加内部内容。。。
对于(l=0;l”+eleArray[l][8]+“
”); } //在这里添加div。。。 $('#aspcal tr:eq('+loopweek+')td:eq('+loopday+'))。追加(myDiv);
这就是append API的工作原理。我会将您的内容作为一个变量,然后它简单地变成
$(targetselector)。append(“”+variable+“”)
。也可以使用
.html()
,这将产生相同的结果

主要区别在于,与当前添加内容的方式不同,您只需继续连接字符串


因为您连接的是一个字符串,所以div可能只是其中的一部分,甚至,然后您只需要
.html(variable)

简短的回答,因为jQuery就是这样工作的。。。 您是否尝试过创建空div,然后附加到该div

var theDiv = $("<div id='outer' style='height:15px'>");
for (l = 0; l < rssArray.length; l++) {
     if (eleArray[l][19] == curNumMonth && eleArray[l][20] == curNumDay && eleArray[l][21] == curNumYear) {
         theDiv.append("<br /><div style='height:auto'><b>" + eleArray[l][8] + "</b></br><a href='" + eleArray[l][0] + "' target='_blank'>" + eleArray[l][1] + "</a></div>");
    }
$('#aspcal tr:eq(' + loopweek + ') td:eq(' + loopday + ')').append( theDiv );
var theDiv=$(“”);
对于(l=0;l”+eleArray[l][8]+”
”; } $('#aspcal tr:eq('+loopweek+')td:eq('+loopday+'))。追加(theDiv);
在客户端上,您不使用HTML标记。您使用的是整个DOM节点,这些节点在DOM树结构中作为一个整体移动。jQuery让您认为您实际上在操作HTML字符串,但事实并非如此。它只允许您使用HTML字符串来表示您的结构。这让人感到困惑。“jQuery足够聪明,可以关闭标记并为您完成所有艰巨的工作。”它不会关闭任何标记。它要么接受您的标记,并使用
createElement
创建新的DOM节点,要么使用
.innerHTML
创建DOM节点(用于更复杂的HTML字符串)。事实上,它使用HTML作为语法只会让你觉得你在/它在做字符串操作。谢谢Jeff,但我刚刚发现。wrap做了它的工作,但并不真正适用于我的情况,因为很难为内部内容找到合适的选择器。对于你提到的append()部分自动关闭div。这实际上是个问题,因为一旦它关闭,它将不包含以下内容。我发现先创建一个空div,然后再进行追加,效果非常好。谢谢你的帮助。@EastBounder:因此我的回答剩下的部分。@I不是吗?我是:是的,我知道它是如何工作的。有些人,比如m你自己,想象一下。我应该把“关闭所有标签”"引用。更多的是对真实情况的隐喻。我不怀疑你知道发生了什么,但很多人不知道,因此他们对待DOM就像他们在服务器上处理文本一样。这可能是不好的。不幸的是,jQuery的API的一部分有助于继续这种误解。在你的更新中+1。不用担心。其他方法最终都是错误的当他们一次附加一个节点时,更灵活一些。如果你需要的话,更容易混合和匹配不同的节点。
var theDiv = $("<div id='outer' style='height:15px'>");
for (l = 0; l < rssArray.length; l++) {
     if (eleArray[l][19] == curNumMonth && eleArray[l][20] == curNumDay && eleArray[l][21] == curNumYear) {
         theDiv.append("<br /><div style='height:auto'><b>" + eleArray[l][8] + "</b></br><a href='" + eleArray[l][0] + "' target='_blank'>" + eleArray[l][1] + "</a></div>");
    }
$('#aspcal tr:eq(' + loopweek + ') td:eq(' + loopday + ')').append( theDiv );