2012-03-06 31 views
0

所以我想要做的是通過追加第一個,然後是內容添加一個外部div容器,然後追加最後一個。但結果似乎是,我在開始時添加自動插入一個。結果在兩個單獨的div。如何把<div> and</div>之前和之後的內容使用append()?

有人嗎?謝謝!

//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>");​ 
+0

在客戶端上,您不使用HTML標記。您可以使用整個DOM樹結構中的整個DOM節點。 jQuery讓你認爲你實際上在操縱HTML字符串,但你不是。它只是讓你使用HTML字符串來表示你的結構。這讓人困惑。 – 2012-03-06 18:59:31

回答

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); 
+0

感謝您的快速和工作答案〜 – eastboundr 2012-03-06 19:20:21

7

您不是用jQuery創建標籤,而是創建DOM對象。 A 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

謝謝傑夫,.wrap()的工作就像一個魅力! – eastboundr 2012-03-06 19:01:37

+0

*「jQuery足夠聰明,可以關閉標籤併爲您完成所有的辛苦工作。」*它不關閉任何標籤。它需要你的標記,並使用'createElement'來創建一個新的DOM節點,或者使用'.innerHTML'來創建DOM節點(用於更復雜的HTML字符串)。它使用HTML作爲語法的事實只會讓你認爲你正在做字符串操作。 – 2012-03-06 19:03:01

+0

謝謝傑夫,但我剛剛發現.wrap能夠完成它的工作,但並不能很好地適用於我的情況,因爲很難爲內部內容找到適當的選擇器。而對於你提到append()的部分會自動關閉div。這實際上是問題,因爲一旦它關閉,它將不包含以下內容。我發現先創建一個空的div,然後做好附加的作品,非常好。非常感謝您的幫助。 – eastboundr 2012-03-06 19:19:11

0

這就是append API的工作原理。我會將你的內容作爲一個變量,然後它變成$(targetselector).append('<div>' + variable + '</div>')。也可以使用.html()這將有相同的結果。

主要的區別在於,不是按照當前的方式添加所有內容,而只是將字符串連接起來。

既然你連接字符串,該div的可能只是其中的一部分,甚至,然後你只.html(variable)

+0

感謝您的幫助 – eastboundr 2012-03-06 19:22:00

+0

無後顧之憂。其他方法在添加節點時最終具有更大的靈活性。如果您需要這樣做,更容易混合和匹配不同的節點。 – 2012-03-06 19:36:26

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); 
+0

是的,工作就像一個魅力!謝謝 – eastboundr 2012-03-06 19:23:04

相關問題