Does jQuery UI have a draggable plugin?

Gør elementer trækbare med jQuery UI Draggable

21/02/2026

Rating: 4.25 (7617 votes)
Indholdsfortegnelse

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.

Does jQuery UI have a draggable plugin?
The main reason that this plugin exist is that there are currently no good jQuery plugin for making elements draggable, that has touch devices as it's main target (at least that I know of). jQuery UI has a draggable plugin which, together with jQuery UI Touch Punch , can be used to make elements draggable on touch devices.

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.

How do I use draggable in jQuery UI?
The draggable widget uses the jQuery UI CSS framework to style its look and feel. If draggable specific styling is needed, the following CSS class names can be used for overrides or as keys for the classes option: ui-draggable: The draggable element. When the draggable is disabled, the ui-draggable-disabled class is added.
$( ".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:

FunktionjQuery UI Draggable (med Touch Punch)Draggable Touch
Primært MålMusebaseret interaktionTouch-enheder
Touch-håndteringVia falske muse-events (potentielt fejlbehæftet)Direkte brug af touch-events (mere robust)
Ydeevne på TouchKan være langsommere og mindre responsivGenerelt bedre og mere responsiv
AfhængighederjQuery, jQuery UI Core, jQuery UI Widget, jQuery UI Mouse, jQuery UI Draggable, jQuery UI Touch PunchjQuery
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 for left og top, 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.

Go up