如何使用append()在内容块之前和之后放置<div>和</div>?

时间:2012-03-06 18:54:34

标签: javascript jquery html

所以我要做的是先添加一个外部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>");​

4 个答案:

答案 0 :(得分:7)

您不是使用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>");
}

我只在选择器中引用#outer,因为作为ID,它应该是唯一的。如果不是,请将其更改为类并执行此操作:

//adds the outer div tag here...
var aspcal = $('#aspcal tr:eq(' + loopweek + ') td:eq(' + loopday + ')');
aspcal.append("<div class='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.find('.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(或任何其他父级对象)。

答案 1 :(得分:2)

首先创建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);

答案 2 :(得分:1)

简短的回答,因为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 );

答案 3 :(得分:0)

这是追加API的工作方式。我会将您的内容作为变量,然后它变为$(targetselector).append('<div>' + variable + '</div>')。也可以使用具有相同结果的.html()

主要区别在于,您不必按照当前的方式添加所有内容,而只是连接字符串。

由于你正在连接一个字符串,所以div甚至可以成为它的一部分,然后你就.html(variable)