21/02/2026
- Introduktion til jQuery UI Draggable
- Grundlæggende Brug af jQuery UI Draggable
- Udforskning af Draggable-muligheder
- Sammenligning: jQuery UI Draggable vs. Draggable Touch
- Events i jQuery UI Draggable
- Hyppigt Stillede Spørgsmål (FAQ)
- Har jQuery UI et Draggable plugin?
- Hvordan gør jeg et element trækbart med jQuery UI?
- Hvordan får jeg jQuery UI Draggable til at virke på touch-enheder?
- Hvad er forskellen på jQuery UI Draggable og Draggable Touch?
- Kan jeg begrænse trækning til en bestemt akse?
- Hvordan kan jeg få et element til at vende tilbage til sin startposition?
- Konklusion
Introduktion til jQuery UI Draggable
At gøre HTML-elementer interaktive og mulige at flytte rundt på en webside er en almindelig opgave inden for webudvikling. jQuery UI, et populært bibliotek bygget oven på jQuery, tilbyder en robust og alsidig løsning til dette med sit Draggable plugin. Dette plugin gør det nemt for udviklere at implementere træk-og-slip funktionalitet uden at skulle skrive omfattende JavaScript-kode fra bunden.

I denne artikel vil vi dykke ned i, hvordan du bruger jQuery UI Draggable, udforske dets mange konfigurationsmuligheder og sammenligne det med alternative løsninger, især med fokus på understøttelse af touch-enheder.
Grundlæggende Brug af jQuery UI Draggable
For at komme i gang med jQuery UI Draggable skal du først sikre dig, at du har inkluderet både jQuery-biblioteket og jQuery UI-bibliotekerne i dit HTML-dokument. Derefter kan du nemt gøre et hvilket som helst HTML-element trækbart ved at kalde .draggable() metoden på den pågældende jQuery-objekt. Lad os se på et simpelt eksempel:
$( ".min-dragebare-elementer" ).draggable();
Med denne ene linje kode kan du nu trække alle elementer med klassen .min-dragebare-elementer rundt på siden med musen. jQuery UI håndterer automatisk alle de nødvendige DOM-manipulationer og event-listeners for at få dette til at fungere.
Udforskning af Draggable-muligheder
jQuery UI Draggable er yderst konfigurerbar, hvilket giver dig fin kontrol over, hvordan dine elementer opfører sig, når de trækkes. Lad os se på nogle af de mest brugte muligheder:
addClasses
Som standard tilføjer Draggable-pluginnet CSS-klassen ui-draggable til de elementer, der gøres trækbare. Dette er nyttigt for styling, men hvis du arbejder med et meget stort antal elementer, kan det være en performance-optimering at deaktivere dette ved at sætte addClasses til false.
$( ".mine-elementer" ).draggable({ addClasses: false }); appendTo
Denne mulighed bestemmer, hvor den 'hjælper'-element (den visuelle repræsentation af det, der trækkes) skal indsættes i DOM'en under trækningen. Standard er "parent", men du kan også angive et specifikt element, et selector eller endda "body" for at indsætte hjælperen direkte i body-tagget.
$( ".mine-elementer" ).draggable({ appendTo: "body" }); axis
Hvis du kun ønsker at tillade trækning langs en bestemt akse (enten horisontalt eller vertikalt), kan du bruge axis-muligheden. Angiv "x" for horisontal trækning eller "y" for vertikal trækning.
$( ".horisontal-traekbar" ).draggable({ axis: "x" }); containment
For at begrænse trækningen inden for et bestemt område, kan du bruge containment. Dette kan være et selector for et andet element, "parent", "window", "document" eller endda et array, der definerer en præcis rektangulær boks.
$( ".inde-i-boks" ).draggable({ containment: ".min-container" }); cursor
Du kan ændre musemarkøren, mens et element trækkes, ved at angive en CSS-cursor-værdi for cursor-muligheden.
$( ".traek-med-krydshaar" ).draggable({ cursor: "crosshair" }); handle
Nogle gange ønsker du kun at tillade trækning, når brugeren klikker på et specifikt område inden i det trækbare element, f.eks. en titelbjælke. Brug handle-muligheden med en selector for at specificere dette område.
$( ".vindue" ).draggable({ handle: ".vindue-titel" }); helper
Som standard klones det element, der trækkes, for at skabe en 'hjælper'. Du kan ændre dette ved at sætte helper til "clone" (som er standard), eller ved at angive en funktion, der returnerer et jQuery-objekt eller DOM-element til brug som hjælper.
opacity
For at give visuel feedback kan du justere gennemsigtigheden af hjælper-elementet under trækningen med opacity-muligheden.
$( ".let-gennemsigtig" ).draggable({ opacity: 0.6 }); revert
Hvis du ønsker, at et element skal vende tilbage til sin oprindelige position efter trækningen, kan du bruge revert-muligheden. Sæt den til true for altid at vende tilbage, eller til "invalid" eller "valid" for at vende tilbage, afhængigt af om elementet blev droppet på en gyldig drop-zone.

$( ".skal-vende-tilbage" ).draggable({ revert: true, revertDuration: 500 }); snap
Med snap-muligheden kan du få elementet til at 'snappe' til andre elementer eller et gitter. Dette er især nyttigt for at skabe pæne layouts og justeringer.
$( ".snap-til-gitter" ).draggable({ snap: true, snapTolerance: 20 }); Sammenligning: jQuery UI Draggable vs. Draggable Touch
Mens jQuery UI Draggable er fremragende til musebaseret interaktion, er der en voksende efterspørgsel efter robuste løsninger til touch-enheder. En populær tredjepartsudvidelse, kendt som Draggable Touch, er designet specifikt til dette formål.
Hovedårsagen til, at Draggable Touch eksisterer, er de begrænsninger, der opleves ved at bruge jQuery UI Draggable sammen med løsninger som jQuery UI Touch Punch. Touch Punch fungerer ved at generere falske muse-events ud fra touch-events. Dette kan føre til fejl og uforudsigelig adfærd, især når man forsøger at bruge jQuery UI Draggable på enheder som tablets og smartphones.
Draggable Touch, derimod, er bygget fra bunden med fokus på touch-events. Dette resulterer i en mere direkte og pålidelig oplevelse på touch-skærme. Selvom det primært bruger touch-events, inkluderer det også en fallback til muse-events for browsere, der ikke understøtter touch.
Her er en oversigt over forskellene:
| Funktion | jQuery UI Draggable (med Touch Punch) | Draggable Touch |
|---|---|---|
| Primært Mål | Musebaseret interaktion | Touch-enheder |
| Touch-håndtering | Via falske muse-events (potentielt fejlbehæftet) | Direkte brug af touch-events (mere robust) |
| Ydeevne på Touch | Kan være langsommere og mindre responsiv | Generelt bedre og mere responsiv |
| Afhængigheder | jQuery, jQuery UI Core, jQuery UI Widget, jQuery UI Mouse, jQuery UI Draggable, jQuery UI Touch Punch | jQuery |
| Kodeeksempel | $(".selector").draggable(); | $(".selector").draggableTouch(); |
Draggable Touch Features
Draggable Touch tilbyder også en række nyttige funktioner:
- Understøttelse af flere touch-punkter: Kan håndtere flere samtidige berøringer.
- Brug af CSS Transform: Mulighed for at bruge CSS
transform-egenskaben til positionering i stedet forleftogtop, hvilket kan give bedre performance. - Understøtter flere elementer: Kan gøre flere elementer trækbare samtidigt.
Her er et eksempel på, hvordan du bruger Draggable Touch:
$( ".mine-dragebare-elementer" ) .draggableTouch() .on( "dragstart", function( event, pos ) { console.log( "Drag started on:", this, "at position:", pos ); }) .on( "dragend", function( event, pos ) { console.log( "Drag ended on:", this, "at position:", pos ); }); // Brug af transform for positionering $( ".mine-dragebare-elementer" ).draggableTouch({ useTransform: true }); // Deaktiver trækbarhed $( ".mine-dragebare-elementer" ).draggableTouch( "disable" ); Events i jQuery UI Draggable
jQuery UI Draggable udløser en række events, som du kan binde dine egne funktioner til for at reagere på forskellige stadier af træk-og-slip processen. Nogle af de vigtigste events inkluderer:
create: Udløses når widgeten oprettes.start: Udløses når trækningen starter. Indeholder information om det oprindelige element og den aktuelle position.drag: Udløses under selve trækningen, hver gang elementets position ændres.stop: Udløses når trækningen stopper. Bruges ofte til at gemme den nye position eller udføre yderligere handlinger.
Eksempel på brug af events:
$( ".mit-element" ).draggable({ start: function(event, ui) { // Gør noget når trækningen starter $(this).addClass('trækker-nu'); }, drag: function(event, ui) { // Gør noget mens der trækkes // ui.position indeholder den aktuelle position }, stop: function(event, ui) { // Gør noget når trækningen stopper $(this).removeClass('trækker-nu'); // ui.position indeholder den endelige position var nyX = ui.position.left; var nyY = ui.position.top; console.log('Element placeret ved:', nyX, nyY); } }); Hyppigt Stillede Spørgsmål (FAQ)
Har jQuery UI et Draggable plugin?
Ja, jQuery UI har et indbygget Draggable plugin, som er en del af jQuery UI Widget Factory.
Hvordan gør jeg et element trækbart med jQuery UI?
Du gør et element trækbart ved at vælge det med en jQuery-selector og kalde .draggable() metoden på det: $(".dit-element").draggable();
Hvordan får jeg jQuery UI Draggable til at virke på touch-enheder?
jQuery UI Draggable er primært designet til museinteraktion. For at få det til at virke på touch-enheder, skal du ofte bruge en ekstra løsning som jQuery UI Touch Punch. Bemærk dog, at denne kombination kan medføre fejl. En mere direkte løsning til touch er at bruge et plugin som Draggable Touch.
Hvad er forskellen på jQuery UI Draggable og Draggable Touch?
jQuery UI Draggable bruger muse-events og kræver ofte 'falske' touch-events via et plugin for touch-enheder. Draggable Touch er bygget specifikt til touch-events for bedre performance og færre fejl på mobile enheder.
Kan jeg begrænse trækning til en bestemt akse?
Ja, brug axis: "x" for horisontal eller axis: "y" for vertikal trækning.
Hvordan kan jeg få et element til at vende tilbage til sin startposition?
Brug revert: true optionen. Du kan også styre varigheden af animationen med revertDuration.
Konklusion
jQuery UI Draggable er et kraftfuldt værktøj til at tilføje træk-og-slip funktionalitet til dine webprojekter. Med dets omfattende muligheder kan du skræddersy brugeroplevelsen præcist efter dine behov. For projekter, der sigter mod touch-enheder, er det dog værd at overveje dedikerede løsninger som Draggable Touch for at sikre den bedste performance og stabilitet. Uanset dit valg, giver disse værktøjer dig mulighed for at skabe mere dynamiske og engagerende brugergrænseflader.
Hvis du vil læse andre artikler, der ligner Gør elementer trækbare med jQuery UI Draggable, kan du besøge kategorien Teknologi.
