Logotyp för Björns studiewebb

Manipulation - jQuery

Innehåll

På denna sida beskrivs hur man manipulerar element i DOM-struktur, t.ex. lägger till nya element och ändrar stil (CSS) för element.

Inledning

När vi valt ut element och kapslat in dem i ett jQuery-objekt så är det dags att manipulera elementen, t.ex. genom att ändra stil (CSS) för element, dölja/visa element eller rent av lägga till nya/ta bort existerande element.

CSS

I detta avsnitt beskrivs metoder för att ändra stil för element, antingen genom att lägga till eller ta bort stil, men även klass för element.

CSS-metoder
Metod Element som väljs ut
.addClass(arg) Lägger till klass till alla element
.css([egenskap[, varde]]) Hämtar stilar för första elementet, och ev. enbart för egenskap i argumentet egenskap eller sätter värdet i argumentet varde för egenskapen i argumentet egenskap
.hasClass(klass) true om element är av klass i argumentet klass
.removeClass([klass]) Tar bort klasser från första elementet, eller endast klass/-er i argumentet klass
.toggleClass(arg[, byta]) Lägger till eller tar bort t.ex. klass i argumentet arg från element, baserat på om argumentet byta är sant

I exempel nedan väljs element med ID "errors" ut och sen läggs klassen "visualRed" till, för att sen tas bort på nästa rad. På tredje raden sätts elementets stil för bakgrundsfärg direkt och på fjärde raden sätts stil för både bakgrundsfärg och fet stil direkt i element. Om man sätter flera stilar så använder man en vektor med namngivna positioner (eng. map).

$("#errors").addClass("visualRed");
$("#errors").removeClass("visualRed");
$("#errors").css("background-color", "red");
$("#errors").css({"background-color": "red", 
    "font-style": bold});

Till början på sida

Storlek (höjd och bredd)

I detta avsnitt beskrivs metoder för att hämta eller sätta höjd och bredd för element, värden som avser storlek innan- och utanför kantlinjer, men även positionering av element.

Storleksmetoder
Metod Element som väljs ut
.height([varde]) Hämtar eller sätter höjd för första elementet, exkl. utfyllnad
.innerHeight([varde]) Hämtar eller sätter höjd innanför kantlinje för första elementet
.innerWidth([varde]) Hämtar eller sätter bredd innanför kantlinje för första elementet
.offset([koord]) Hämtar eller sätter koordinater för första elementets position, relativt dokumentet
.outerHeight([varde]) Hämtar eller sätter höjd, inkl. marginaler, för första elementet
.outerWidth([varde]) Hämtar eller sätter bredd, inkl. marginaler, för första elementet
.position() Hämtar koordinater för första elementet, relativt omslutande element
.scrollLeft([varde]) Hämtar eller sätter horisontell skrollposition för första elementet
.scrollTop([varde]) Hämtar eller sätter vertical skrollposition för första elementet
.width([varde]) Hämtar eller sätter bredd för första elementet, exkl. utfyllnad

(ATT GÖRA: En beskrivning...)

var intInnerWidth = $("#errors").innerWidth();

Till början på sida

Manipulation

I detta avsnitt beskrivs metoder för att manipulera element i DOM-struktur. Element kan infogas före och efter ett annat element. Det finns även två metoder att infoga med för flexibilitet (i t.ex. loopar eller funktionsanrop).

Infoga utanför element

Metoder i detta avsnitt tillåter infogande utanför element, antingen före eller efter elementet.

Manipulationsmetoder
Metod Element som väljs ut
.after(innahall) Infogar innehall efter element
.before(innahall) Infogar innehall fore element
.insertAfter(mal) Infogar element efter argumentet mal
.insertBefore(mal) Infogar element före argumentet mal

De två första metoderna (.after() och .before()) infoga argument till element i jQuery-objekt i motsats till de två sista metoderna som infogar element efter/före argument.

I båda satser läggs texten till efter element med ID "errors", fast med det två olika metoderna.

$("#errors").after("<p>Some error text</p>");
$("<p>Some error text</p>").insertAfter("#errors");

Större exempel

Infoga inuti element

Metoder i detta avsnitt tillåter infogande inuti ett element, antingen först (eng. prepend), sist (eng. append) eller infogande/ersättande av hela innehållet.

Manipulationsmetoder
Metod Element som väljs ut
.append(arg) Lägger till argumentet arg till slutet på elements innehåll
.prepend(arg) Lägger till argumentet arg till början på elements innehåll
.appendTo(mal) Lägger till element till slutet på argumentet mal
.prependTo(mal) Lägger till element till början på argumentet mal
.html(html) Hämtar eller sätter HTML i argumentet html som första elements innehåll
.text(innehall) Hämtar eller sätter innehåll i argumentet innehall som första elements innehåll

De två första metoderna (.append() och .prepend()) infogar argument till element i jQuery-objekt i motsats till de två sista metoderna som infogar element efter/före argument.

Metoden .html() hämtar eller sätter HTML-kod i element medan metoden .text() hämtar innehåll i element - eventuella HTML-taggar utelämnas.

På första raden väljs först element ut att lägga till inuti och sen läggs text till sist inuti elementet. Samma sak sker på andra raden, men här "väljs" först text att lägga till och som argument till metod skickas element att lägga till text till.

$("#errors").append("Some error text");
$("Some error text").appendTo("#errors");

Större exempel

Kopiera och ta bort

Metoder i detta avsnitt tillåter kopiering och borttagande av element, men även elements attribut. Metoderna i tabell nedan kan användas för att manipulera element.

Metoder för manipulation av element
Metod Element som väljs ut
.clone([handelser1[, handelser2]]) Kopia på element och alla ättlingar, och ev. händelsehanterare om argumentet handelser1 sant samt ev. ättlingars händelsehanterare om handelser2 sant
.detach(selektor) Tar bort element, och ev. attribut med namnet i argumentet namn eller sätter värde på attributet
.empty() Tar bort element, och ev. attribut med namnet i argumentet namn eller sätter värde på attributet
.remove([selektor]) Tar bort element, och ev. element som matchar argumentet selektor
.replaceAll(selektor) Ersätter alla element som matchar argumentet selektor
.unwrap() Tar bort elements förälder
.val([varde]) Hämtar eller sätter värde för element - främst formulärelement
.wrap(arg) Lägg till element i arg som förälder till varje element
.wrapAll(arg) Lägg till ett och samma element i arg som förälder till alla element
.wrapInner(arg) Lägg till element i arg kring elements innehåll

Metoder i detta avsnitt skiljer på attribut och egenskaper: attribut är en del av dokumentets innehåll medan egenskaper är en del av dokumentets egenskaper, t.ex. namn på elements tagg.

Det finns ett antal metoder för att manipulera attribut i element, men även för att manipulera egenskaper (eng. properties) som t.ex. kan användas i egen kod.

Metoder för manipulation av attribut/egenskaper
Metod Element som väljs ut
.attr([namn[, varde]]) Hämtar attribut för första elementet, och ev. attribut med namnet i argumentet namn eller sätter värde på attributet
.prop([namn[, varde]]) Hämtar egenskaper för första elementet, och ev. egenskap med namnet i argumentet namn eller sätter värde på egenskapen
.removeAttr(namn) Tar bort attributet som matchar argumentet namn
.removeProp(namn) Tar bort egenskap som matchar argumentet namn

Till början på sida

Referenser

Nedan finns några böcker och webbsidor/-platser som jag använt för att skapa denna underwebb.