2012-04-23 13 views
5

Quindi vedo qui a add a div e qui come add a class ma ho problemi a combinare i due. Voglio generare un gruppo di div di una classe e di un ID specifici all'interno del div sparkLineContainer.jquery, aggiungi div con definizione di classe

ho la div contenente

<div id="#sparkLineContainer"></div> 

e voglio aggiungere un po 'di quanto segue ad esso

<div id="#sparkLineContainer"> 
     <div class="sparkLines" id="id1">Some stuff here</div> 
     <div class="sparkLines" id="id2">Some stuff here</div> 
     <div class="sparkLines" id="id3">Some stuff here</div> 
// and so on 
    </div> 

frammento - Non ce l'ha fatta molto lontano, io sono perplesso

$('#sparkContainer').add("div"); \\ How do I add the id and class to this div? 
            \\ And as a repeat the function will it overwrite this? 

La funzione con cui sto cercando di farlo.

function renderSparklines (array1, sparkLineName, id) { 
// array1 is the data for the spark line 
// sparkLineName is the name of the data. 
// Turn all array values into integers 
arrayStringToInt(array1); 

    // Create new div of class sparkLines 
$('#sparkContainer').add("div") 

    // Render new spark line to 
$('.sparkLines').sparkline(array1, {width:'90px'}); 

var htmlString = ""; // Content to be added to new div 
// GENERATE LITTLE SPARK BOX 
    htmlString += 
       '<font class = "blueDescriptor">' + sparkLineName + '</font>'+ 
       '<br>'+ 
       '<font class = "greyDescriptorSmall">Ship to Shore</font>'+ 
       '<br>'+ 
       '<font class = "blackDescriptorSparkLine">' + array1[array1.length-1] + '</font>'+ 
       '<font class = "greenDescriptorSparkline">(' + (array1[array1.length-1] - array1[array1.length-2]) + ')</font>' + 
       '<br>'; 
    $('.sparkLines').prepend(htmlString); 

}

+0

.add function() non aggiunge di un div. Aggiunge solo al selettore abbinato. –

risposta

8

È necessario .append o .prepend aggiungere un div al contenitore. Vedi la mia versione di seguito,

var $sparkLines = $('.sparkLines'); 
$("#sparkLineContainer") 
    .append('<div id="id' + 
      ($sparkLines.length + 1) + 
      '" class="sparkLines">Some Stuff Here</div>') 

Inoltre ho notato che hai id del div come #sparkLineContainer. Si dovrebbe cambiare come qui sotto,

<div id="sparkLineContainer"> 
... 

DEMO

+0

Ho usato lo stesso codice ma con i miei nomi div ecc. E nessun div è stato aggiunto al contenuto e nessun errore. – rd42

+1

@ rd42 Funziona per me http://jsfiddle.net/skram/KU4Ry/1/. Inoltre nel markup assicurati di cambiare il div ID in 'sparkLineContainer' not' #sparkLineContainer '. –

+0

Grazie, stavo solo provando a JSFiddle it – rd42

14

add non fa quello che pensi lo fa. Stai cercando append o qualcosa di simile.

È possibile creare il div prima e definire i suoi attributi e contenuti, quindi aggiungere che:

var $newDiv = $("<div/>") // creates a div element 
       .attr("id", "someID") // adds the id 
       .addClass("someClass") // add a class 
       .html("<div>stuff here</div>"); 

$("#somecontainer").append($newDiv); 
+0

Ho usato lo stesso codice ma con i miei nomi div ecc. E nessun div è stato aggiunto al contenuto e nessun errore. – rd42

+0

Tutte le risposte postate dovrebbero funzionare, se non lo fanno, allora stai facendo qualcosa di sbagliato nell'applicarle. –

1

Probabilmente il modo più semplice è quello di modificare solo l'innerHTML:

$("#sparkLineContainer").append('<div class="sparkLine" id="id1"></div>'); 

Ci sono altri modi come bene, ma questo è il metodo che uso generalmente.

+0

Sostituirà il contenuto div esistente all'interno di #sparkLineContainer. Non buono! –

+0

Modificato per aggiungere. Supponevo che fosse vuoto all'inizio. –

+0

Ho usato lo stesso codice ma con i miei nomi div ecc. E nessun div è stato aggiunto al contenuto e nessun errore. – rd42

2

È possibile aggiungere un div o qualsiasi altro tag con classe come:

$('<div/>',{ class : 'example'}).appendTo("p");