18/06/2024
- Introduktion til Drag and Drop med jQuery UI
- Opsætning af Udviklingsmiljøet
- Gør Elementer Trækbare (Draggable)
- Oprettelse af Dråbeområder (Droppable)
- Kombination af Draggable og Droppable
- Tilføjelse af Visuel Feedback
- Avancerede Drag and Drop Funktioner
- Konklusion
- Yderligere Ressourcer
- Hvordan virker jQuery UI?
- Håndtering af Drag and Drop-events i jQuery
- Interessante Pointer
Introduktion til Drag and Drop med jQuery UI
Drag and drop-funktionalitet er en kraftfuld og intuitiv måde at forbedre interaktiviteten i webapplikationer. Det giver brugerne mulighed for at flytte elementer på siden, sortere emner eller endda udføre handlinger som fil-uploads ved blot at trække og slippe. Implementering af drag and drop kan markant forbedre brugeroplevelsen ved at tilbyde en naturlig og effektiv måde at interagere med brugerfladen på.

jQuery UI, et populært bibliotek bygget oven på jQuery, tilbyder robuste og brugervenlige metoder til at skabe drag and drop-interaktioner. I denne artikel vil vi udforske, hvordan man bruger jQuery UI til at implementere drag and drop-funktionalitet. Vi vil dække opsætning af udviklingsmiljøet, gøre elementer trækbare, skabe dråbeområder, kombinere disse funktioner og tilføje visuel feedback for at forbedre brugeroplevelsen. Hver sektion vil indeholde omfattende kodeeksempler og detaljerede forklaringer for at hjælpe dig med at integrere disse funktioner i dine projekter.
Opsætning af Udviklingsmiljøet
Før vi begynder at implementere drag and drop-funktionalitet, skal vi opsætte vores udviklingsmiljø. Dette inkluderer at tilføje jQuery UI til vores projekt og oprette en grundlæggende HTML-side at arbejde med.
Inkludering af jQuery UI i Dit Projekt
For at inkludere jQuery UI i dit projekt kan du enten downloade jQuery UI-biblioteket og hoste det lokalt eller inkludere det via et Content Delivery Network (CDN). Brug af en CDN er den simpleste metode og sikrer, at du altid bruger den seneste version af jQuery UI.
For at inkludere jQuery UI via en CDN, skal du tilføje følgende <script> og <link> tags til <head> sektionen af din HTML-fil:
<link rel="stylesheet" href="https://code.jquery.com/ui/1.14.1/themes/base/jquery-ui.css"> <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script> <script src="https://code.jquery.com/ui/1.14.1/jquery-ui.min.js" integrity="sha256-AlTido85uXPlSyyaZNsjJXeCs07eSv3r43kyCVc8ChI=" crossorigin="anonymous"></script>Skrivning af en Simpel HTML-side
Dernæst lad os oprette en simpel HTML-side, som vi vil bruge til vores eksempler. Opret en ny fil kaldet index.html og tilføj følgende kode:
<!DOCTYPE html> <html lang="da"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>jQuery UI Drag and Drop Eksempel</title> <link rel="stylesheet" href="https://code.jquery.com/ui/1.14.1/themes/base/jquery-ui.css"> <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script> <script src="https://code.jquery.com/ui/1.14.1/jquery-ui.min.js"></script> <style> #draggable { width: 100px; height: 100px; background: #ccc; text-align: center; line-height: 100px; margin: 20px; cursor: grab; /* Indikerer at elementet kan trækkes */ } #droppable { width: 150px; height: 150px; background: #f9f9f9; border: 2px dashed #ccc; text-align: center; line-height: 150px; margin: 20px; } .highlight { background: #cfc !important; border-color: #0f0 !important; } </style> </head> <body> <div id="draggable">Træk mig</div> <div id="droppable">Slip her</div> <script src="script.js"></script> </body> </html>Denne HTML-side indeholder pladsholdere for et trækbart element og et dråbeområde. Vi vil bruge denne struktur til at demonstrere, hvordan man implementerer drag and drop-funktionalitet ved hjælp af jQuery UI.
Gør Elementer Trækbare (Draggable)
Det første skridt i at implementere drag and drop-funktionalitet er at gøre elementer trækbare.
Introduktion til Draggable
Draggable-interaktionen i jQuery UI tillader elementer at blive flyttet ved hjælp af musen. Denne interaktion kan anvendes på ethvert element for at gøre det trækbart, hvilket forbedrer interaktiviteten i din webapplikation.
Kodeeksempel: Grundlæggende Trækbart Element
For at gøre et element trækbart, skal du opdatere filen script.js med følgende kode:
$(document).ready(function() { $('#draggable').draggable(); });I denne kode bruger vi $(document).ready() funktionen til at sikre, at DOM er fuldt indlæst, før nogen jQuery-kode udføres. Vi initialiserer derefter Draggable-interaktionen ved at kalde .draggable() metoden på #draggable-elementet. Dette giver brugeren mulighed for at klikke og trække #draggable-diven rundt på siden.
Oprettelse af Dråbeområder (Droppable)
Efter at have gjort elementer trækbare, er det næste skridt at oprette dråbeområder, hvor disse elementer kan slippes.
Introduktion til Droppable
Droppable-interaktionen i jQuery UI tillader elementer at blive udpeget som dråbemål. Denne interaktion bruges i kombination med Draggable for at skabe interaktive drag-and-drop brugerflader.
Kodeeksempel: Grundlæggende Dråbeområde
For at oprette et dråbeområde, skal du opdatere filen script.js med følgende kode:
$(document).ready(function() { $('#draggable').draggable(); $('#droppable').droppable({ drop: function(event, ui) { $(this).addClass('highlight').html('Slippet!'); } }); });I denne kode initialiserer vi Droppable-interaktionen ved at kalde .droppable() metoden på #droppable-elementet. drop-optionen specificerer en callback-funktion, der udløses, når et trækbart element slippes på dråbeområdet. I denne callback-funktion tilføjer vi en CSS-klasse (highlight) til dråbeelementet og ændrer dets indhold til "Slippet!" for at indikere et succesfuldt drop.
Kombination af Draggable og Droppable
For at skabe en fuldt funktionel drag-and-drop brugerflade, skal vi kombinere trækbare elementer og dråbeområder.
Introduktion til Drag and Drop Interaktion
Kombinationen af draggable og droppable interaktioner giver brugerne mulighed for at flytte elementer og slippe dem i udpegede områder, hvilket forbedrer interaktiviteten i webapplikationer.
Kodeeksempel: Implementering af Drag and Drop
For at implementere en komplet drag-and-drop brugerflade, skal du opdatere filen script.js med følgende kode:
$(document).ready(function() { $('#draggable').draggable(); $('#droppable').droppable({ accept: '#draggable', drop: function(event, ui) { $(this).addClass('highlight').html('Slippet!'); } }); });I denne kode kombinerer vi draggable og droppable interaktionerne. accept-optionen i .droppable() metoden sikrer, at kun #draggable-elementet kan slippes på #droppable-området. Når det trækbare element slippes på dråbeområdet, tilføjer drop callback-funktionen highlight CSS-klassen og opdaterer indholdet til "Slippet!".

Tilføjelse af Visuel Feedback
Tilføjelse af visuel feedback til drag-and-drop interaktioner forbedrer brugeroplevelsen ved at give visuelle signaler om interaktionens status.
Introduktion til Visuel Feedback
Visuel feedback, såsom fremhævning af dråbemål eller ændring af udseendet af trækbare elementer, hjælper brugerne med bedre at forstå drag-and-drop brugerfladen og forbedrer den samlede brugervenlighed.
Kodeeksempel: Fremhævning af Dråbemål
For at tilføje visuel feedback til vores drag-and-drop brugerflade, skal du opdatere filen script.js med følgende kode:
$(document).ready(function() { $('#draggable').draggable({ start: function(event, ui) { $('#droppable').addClass('highlight'); }, stop: function(event, ui) { $('#droppable').removeClass('highlight'); } }); $('#droppable').droppable({ accept: '#draggable', drop: function(event, ui) { $(this).addClass('highlight').html('Slippet!'); } }); });I denne kode forbedrer vi den trækbare interaktion ved at tilføje start og stop event handlers. Når trækningen starter, tilføjer start event handleren highlight CSS-klassen til #droppable-området for at indikere, at det er et gyldigt dråbemål. Når trækningen stopper, fjerner stop event handleren highlight-klassen. Dette giver visuel feedback til brugerne under drag-and-drop interaktionen.
Avancerede Drag and Drop Funktioner
Avancerede drag-and-drop funktioner kan yderligere forbedre interaktiviteten i webapplikationer, såsom sortering og omarrangering af emner.
Introduktion til Avancerede Funktioner
Avancerede funktioner som sortering og omarrangering giver brugerne mulighed for at organisere emner dynamisk. jQuery UI leverer Sortable-interaktionen til nemt at implementere disse funktioner.
Kodeeksempel: Sortering og Omarrangering
For at implementere sortering og omarrangering, skal du oprette en ny sektion i HTML-filen:
<ul id="sortable"> <li class="ui-state-default">Emne 1</li> <li class="ui-state-default">Emne 2</li> <li class="ui-state-default">Emne 3</li> <li class="ui-state-default">Emne 4</li> <li class="ui-state-default">Emne 5</li> </ul>Opdater CSS'en til at style de sorterbare emner:
#sortable { list-style-type: none; margin: 0; padding: 0; width: 200px; } #sortable li { margin: 0 0 10px 0; padding: 10px; font-size: 1.2em; height: 1.5em; background: #f9f9f9; border: 1px solid #ddd; cursor: move; }Opdater filen script.js for at initialisere Sortable-interaktionen:
$(document).ready(function() { $('#draggable').draggable({ start: function(event, ui) { $('#droppable').addClass('highlight'); }, stop: function(event, ui) { $('#droppable').removeClass('highlight'); } }); $('#droppable').droppable({ accept: '#draggable', drop: function(event, ui) { $(this).addClass('highlight').html('Slippet!'); } }); // Tilføj sortable funktionalitet $('#sortable').sortable(); $('#sortable').disableSelection(); // Forhindrer tekstvalg under trækning });I denne kode bruger vi sortable() metoden til at gøre listeelementerne inden for #sortable-elementet sorterbare. disableSelection() metoden forhindrer teksten inde i de sorterbare emner i at blive valgt, hvilket giver en glattere drag-and-drop oplevelse. Brugere kan nu klikke og trække listeelementerne for at omarrangere dem dynamisk.
Konklusion
I denne artikel har vi udforsket, hvordan man implementerer drag and drop-funktionalitet ved hjælp af jQuery UI. Vi startede med at opsætte vores udviklingsmiljø, inkludere jQuery UI i vores projekt og oprette en simpel HTML-side. Derefter demonstrerede vi, hvordan man gør elementer trækbare, opretter dråbeområder, kombinerer disse interaktioner, tilføjer visuel feedback og implementerer avancerede funktioner som sortering og omarrangering. Hver sektion indeholdt detaljerede kodeeksempler og forklaringer for at hjælpe dig med at integrere disse funktioner i dine projekter.
De eksempler og koncepter, der er dækket i denne artikel, giver et solidt fundament for at arbejde med drag-and-drop funktionalitet ved hjælp af jQuery UI. Mulighederne er dog uendelige. Vi opfordrer dig til at eksperimentere yderligere og udforske flere avancerede funktioner og tilpasninger. Prøv at kombinere drag-and-drop interaktioner med andre jQuery UI widgets og effekter for at skabe rige, interaktive webapplikationer.
Yderligere Ressourcer
For at fortsætte din rejse med jQuery UI og drag-and-drop funktionalitet, er her nogle yderligere ressourcer, der vil hjælpe dig med at udvide din viden og dine færdigheder:
- jQuery UI Dokumentation: Den officielle jQuery UI dokumentation er en omfattende ressource til at forstå mulighederne og brugen af jQuery UI.
- Online Tutorials og Kurser: Hjemmesider som Codecademy, Udemy og Coursera tilbyder detaljerede tutorials og kurser om jQuery UI, der henvender sig til forskellige ekspertiseniveauer.
- Bøger: Bøger som "jQuery UI in Action" af T.J. VanToll giver dybdegående indsigt og praktiske eksempler.
- Fællesskab og Forums: Deltag i online fællesskaber og fora som Stack Overflow, Reddit og jQuery UI mailinglisten for at komme i kontakt med andre udviklere, stille spørgsmål og dele viden.
- Eksempelprojekter og Open Source: Udforsk eksempelprojekter og open source jQuery UI-applikationer på GitHub for at se, hvordan andre har implementeret forskellige funktioner og funktionaliteter.
Ved at udnytte disse ressourcer og løbende øve dig, vil du blive dygtig til jQuery UI og være godt på vej til at udvikle imponerende og funktionelle webapplikationer.
Hvordan virker jQuery UI?
jQuery UI er bygget oven på jQuery JavaScript-biblioteket og en blanding af brugergrænseflader, effekter og metoder, som kan anvendes på websiden ved hjælp af jQuery-metoder.
I denne artikel vil vi diskutere sortable-metoden, og hvordan den fungerer ligesom draggable og droppable. Vi vil også generere et unikt ID, mens vi sorterer eller trækker og slipper.
Hvis du arbejder på et CMS eller en backend-applikation, vil dette hjælpe dig med at oprette en træk-og-slip menu eller andre elementer.
Trinvis Implementering med Unikke ID'er
Vi vil følge nogle trin for en bedre forståelse:
Trin 01: Oprettelse af en index.html-fil
Dette indebærer at inkludere de nødvendige biblioteker (Bootstrap, Font Awesome, jQuery, jQuery UI) og strukturere HTML-indholdet med elementer, der skal gøres sorterbare. Vi vil også definere forskellige kolonner til at rumme disse elementer.

Trin 02: Oprettelse af en jQuery-funktion til at udføre operationer
Dette trin fokuserer på at initialisere jQuery UI's sortable() funktionalitet på de relevante elementer (f.eks. lister eller divs). Det inkluderer også logik til at håndtere, når elementer trækkes mellem forskellige sorterbare containere, og at tildele unikke ID'er til elementerne, når de tilføjes eller flyttes.
Trin 03: Oprettelse af et stylesheet for et bedre udseende
Et dedikeret stylesheet (f.eks. style.css) bruges til at give den visuelle stil til elementerne, herunder sorterbare lister, inputfelter og containere. Dette sikrer en æstetisk tiltalende brugerflade.
Generering af Unikke ID'er
Vi kan generere et unikt ID ved hjælp af en simpel funktion. Vi vil bruge følgende funktion til yderligere operationer:
var idCount = 1; $(".menu_list .alert_box").each(function() { $(this).attr("id", "m_" + idCount); idCount++; });Denne kode gennemgår hvert element med klassen .alert_box inden for elementer med klassen .menu_list og tildeler dem et unikt ID, der starter med "m_", efterfulgt af et sekventielt nummer.
Eksempel på HTML-struktur (baseret på din kode)
<!-- Bootstrap 4 --> <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- Font Awesome --> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" /> <link href="css/style.css" rel="stylesheet" /> <!-- jQuery --> <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> <!-- jQuery UI --> <script src="https://code.jquery.com/ui/1.12.0/jquery-ui.min.js"></script> <!-- Custom function --> <script src="js/custom-js.js"></script> <div class="container p-4"> <div class="row m-0" id="add_new_view_row"> <!-- Venstre kolonne --> <div class="col-md-4 border-right sortable_left"> <input type="text" class="form-control mb-0" placeholder="Filtrer menu her..." id="myInput" onkeyup="myFunction_dashboard()" /> <ul id="sortable1" class="pl-0 menu_list js-sortable-group js-drop-target bg-light p-3"> <li class="ui-state-default"> <div id="r_1" class="p-2 alert alert-secondary fade show alert_box course d-block" optiondata="Contact"> <i class="fas fa-grip-vertical d_icon"></i>Contact Us </div> </li> <!-- Flere listeelementer... --> </ul> </div> <!-- Højre kolonne --> <div class="col-md-4 sortable_right"> <input type="text" class="form-control mb-0" placeholder="Filtrer menu her..." id="myInput2" onkeyup="myFunction_dashboard2()" /> <ul id="sortable2" class="pl-0 menu_list js-sortable-group js-drop-target bg-light p-3"> <li class="ui-state-default"> <div id="r_1" class="p-2 alert alert-secondary fade show alert_box course d-block" optiondata="Home"> <i class="fas fa-grip-vertical d_icon"></i>Home </div> </li> <!-- Flere listeelementer... --> </ul> </div> </div> </div>Håndtering af Drag and Drop-events i jQuery
Når vi arbejder med responsive miljøer, kan vi bruge transformationer som transform-coordinate, transform:scale(), transform:rotate() osv. Det ser ud til, at jQuery ikke bryder sig særlig godt om denne forekomst, og i nogle tilfælde kan det forårsage fejl i visse handlinger.
Baggrund: Udfordringer med CSS3 Transformationer
Når vi arbejder i et meget responsivt miljø, kan vi bruge transformationer som transform-coordinate, transform:scale(), transform:rotate() og så videre. Det ser ud til, at jQuery ikke bryder sig særlig godt om denne forekomst, og i nogle tilfælde kan det forårsage fejl i visse handlinger. For denne artikel har vi valgt HYPE3 og TUMULT, som muliggør håndtering af skalering og resizing på en automatisk måde. Vi har forberedt to eksempler for at vise fejlene.
Problemer med Draggable Revert
Jeg er ikke sikker på forekomsten af denne type problem, men jeg kan bekræfte, at dette problem opstår, når coordinate transformation-funktionen bruges. Bemærk, at DEMO1 kun bruger jQuery, jQuery-ui og touch-pouch biblioteker og ikke den native drag and drop-understøttelse.
Løsning: Brug af Native Drag and Drop og Touch Events
Mit forslag var at droppe jQuery-ui og pouch-touch bibliotekerne og i stedet bruge:
- Native Desktop Browser Drag and Drop (Chrome, Firefox, Opera, Safari og Edge understøtter det).
- Touch-events for mobil browser drag and drop-kapacitet.
Desktop Browser Native Support
Det første skridt til denne type tilgang skal være tildeling af en klasse eller et unikt ID til hvert objekt, som vi ønsker at gøre trækbart. I vores eksempel blev alle farvede firkanter navngivet c1, c2... c12 og havde klassenavnet gameObject. Så aktiverer vi blot den native drag-funktion med følgende kode:
for (var c=1;c<=12;c++) { var e = document.getElementById("c"+c); $("#c"+c).attr("draggable","true"); $("#c"+c).attr("ondragstart","_dragStart(event)"); $("#c"+c).attr("ondrop","_onDrop(event)"); $("#c"+c).attr("ondragover","_onDragOver(event)"); }For simplicitet har vi rapporteret de tre funktioner, der håndterer drag and drop, i separate kodestykker:
function _dragStart(a) { a.dataTransfer.setData("text", a.target.id); } function _onDrop(e) { e.preventDefault(); var src = e.dataTransfer.getData("text"); var dst = e.target.id; // Her kan du gøre, hvad du vil med kilden og destinationen for drag and drop! } function _onDragOver(a) { a.preventDefault(); }Mobil Browser Drag and Drop med Touch Events
I dag implementerer mobilbrowsere ikke en native understøttelse for drag and drop. Så det andet skridt var at håndtere de tre gestus, der repræsenterer en drag-and-drop-handling på en berøringsskærm: touchstart, touchmove og touchend.
Alle drag-and-drop operationer bruger et skyggebillede (også kendt som en "ghost"), der hjælper med handlingerne. Dette billede vises nær markøren for at vise brugeren, hvilke objekter der flyttes. Vi skal også spore startpositionen for et objekt for at kunne rulle drag-and-drop tilbage.
Følgende tre variabler kan hjælpe os med berøringer:
// Touch-kapacitet var startPos=[]; var toDrag = null; var dragStart = false;Derefter skal vi for hver berøring på skærmen forstå, om brugeren rammer et trækbart objekt. Dette kan gøres ved simpel kollisionsdetektering.
$(document).on("touchstart", function(e) { e.preventDefault(); // Touch-koordinater var xPos = e.originalEvent.touches[0].pageX; var yPos = e.originalEvent.touches[0].pageY; startPos[0] = xPos; startPos[1] = yPos; $(".gameobject").each(function(index) { var jx = parseFloat($(this).offset().left); var jy = parseFloat($(this).offset().top); var jw = parseFloat($(this).width()); var jh = parseFloat($(this).height()); // Kollisionsdetektering if (jx <= xPos && jy <= yPos && xPos <= (jx + jw) && yPos <= (jy + jh)) { if ($(this).attr("draggable") == "false") { // Objektet, der berøres, er ikke trækbart! } else { // Kollision opdaget toDrag = $(this).attr("id"); dragStart = true; // Opsætning af skyggebillede var shadow = document.getElementById("shadow"); if (shadow == null) { shadow = document.createElement("div"); document.getElementById("game").appendChild(shadow); shadow.setAttribute("id", "shadow"); shadow.style.position = "absolute"; shadow.style.zIndex = "9999999"; } // Til formålet med denne artikel vil skyggebilledet være en firkant // med samme farve som det berørte objekt $("#shadow").css("visibility", "visible"); var shadowImg = $(this).css("background-image"); $("#shadow").css("background-image", shadowImg); $("#shadow").css("background-size", "100% 100%"); $("#shadow").css("left", xPos + "px"); $("#shadow").css("top", yPos + "px"); $("#shadow").css("width", jw + "px"); $("#shadow").css("height", jh + "px"); return; } } }); });Nu har vi opdaget en kollision på et trækbart objekt, og derfor skal vi spore brugerens finger ved at følge enhver yderligere berøring. Dette kan gøres med et par linjer kode.
$(document).on("touchmove", function(e) { e.preventDefault(); if (dragStart && toDrag != null) { // Flyt skyggen var xPos = e.originalEvent.touches[0].pageX; var yPos = e.originalEvent.touches[0].pageY; var sw = parseFloat($("#shadow").width()); var sh = parseFloat($("#shadow").height()); $("#shadow").css("left", (xPos - sw / 2) + "px"); $("#shadow").css("top", (yPos - sh / 2) + "px"); } });Endelig skal vi forstå, hvor fingeren forlader skærmen. Dette vil være de sidste koordinater for vores skyggebilleder og dermed slippositionen.
$(document).on("touchend", function(e) { e.preventDefault(); if (dragStart && toDrag != null) { // Her kan du anvende grafiske effekter på skyggen, f.eks. vende tilbage til startpositionen eller fade ud $("#shadow").css("visibility", "hidden"); dragStart = false; var xPos = 0; var yPos = 0; if (e.changedTouches == undefined) { xPos = e.originalEvent.changedTouches[0].pageX; yPos = e.originalEvent.changedTouches[0].pageY; } else { xPos = e.changedTouches[0].pageX; yPos = e.changedTouches[0].pageY; } // Søger efter kollision mellem gameObject og touchleave position var target = null; $(".gameobject").each(function(index) { var tx = parseFloat($(this).offset().left); var ty = parseFloat($(this).offset().top); var tw = parseFloat($(this).width()); var th = parseFloat($(this).height()); if (tx <= xPos && ty <= yPos && xPos <= (tx + tw) && yPos <= (ty + th)) { target = $(this).attr("id"); // Her kan du udføre kode på kilde og destination return; } }).promise().done(function() { // Yderligere logik efter kollisionssøgning }); } });Interessante Pointer
Denne artikel kunne være ubrugelig, hvis nogen kender en jQuery-ui konfigurationsparameter, der løser dette problem. Jeg kender ikke nogen metode, men jeg er ikke sikker på, om en eksisterer.
Historik
Denne sektion ville normalt indeholde oplysninger om tidligere versioner eller opdateringer af artiklen, men da dette er en genereret tekst, er der ingen historik at henvise til.
Sammenligningstabel: jQuery UI Draggable vs. Native HTML5 Drag and Drop
For at give et klarere overblik, her er en sammenligning af jQuery UI's drag-and-drop-funktionalitet med den native HTML5 drag-and-drop API:
| Funktion | jQuery UI | Native HTML5 Drag and Drop |
|---|---|---|
| Opsætning | Kræver inkludering af jQuery og jQuery UI biblioteker. Enkel initialisering med .draggable() og .droppable(). | Ingen eksterne biblioteker kræves. Bruger attributter som draggable="true" og event handlers som ondragstart, ondrop, ondragover. |
| Funktionalitet | Tilbyder rig og tilpasselig funktionalitet med mange options (f.eks. containment, revert, helper). | Grundlæggende funktionalitet. Mere kontrol over datatransmission via dataTransfer objektet. |
| Tilpasning | Høj grad af tilpasning via options og events. Nem integration med andre jQuery UI widgets. | Kræver mere manuel kodning for at opnå komplekse effekter og visuel feedback. |
| Browserunderstøttelse | Generelt god understøttelse på tværs af moderne browsere. | God understøttelse i moderne browsere, men kan have små forskelle i implementering. Kræver specifik håndtering for touch-enheder. |
| Ydeevne | Kan være en smule tungere på grund af bibliotekets overhead. | Potentielt mere performant, da det er en browser-native funktion. |
| Kompleksitet (mobile) | Kræver ofte yderligere biblioteker (f.eks. jQuery Mobile eller custom touch-events) for optimal mobil understøttelse. | Kræver manuel implementering af touch-events (touchstart, touchmove, touchend) for mobil understøttelse. |
Ofte Stillede Spørgsmål (FAQ)
- Hvad er den mest effektive måde at implementere drag and drop på? For de fleste webprojekter, der allerede bruger jQuery, er jQuery UI en fremragende og effektiv løsning på grund af dens brugervenlighed og omfattende funktionalitet. For projekter, der prioriterer minimal afhængighed eller har brug for meget specifik, lavniveaukontrol, kan den native HTML5 Drag and Drop API være et bedre valg, især hvis man kombinerer det med touch-event håndtering for mobile enheder.
- Hvordan håndterer jQuery UI touch-enheder? jQuery UI's standardimplementering er primært designet til museinput. For at opnå god funktionalitet på touch-enheder, skal man typisk integrere med biblioteker som jQuery Mobile eller implementere brugerdefinerede touch-event-håndteringer for at efterligne museadfærd.
- Kan jeg gøre et element trækbart og slippe det i et andet trækbart element? Ja, jQuery UI tillader indlejrede dråbeområder og komplekse interaktioner. Du kan definere flere dråbeområder og bruge
accept-optionen i.droppable()for at styre, hvilke elementer der kan slippes hvor. - Hvordan nulstiller jeg et elements position efter trækning? jQuery UI's
.draggable()metode har enrevert-option. Ved at sætterevert: truevil elementet automatisk vende tilbage til sin oprindelige position, hvis det ikke slippes på et gyldigt dråbeområde eller hvisrevertDurationer angivet.
Hvis du vil læse andre artikler, der ligner jQuery UI: Gør Webinteraktion Nemmere, kan du besøge kategorien Teknologi.
