How do I use a listview plugin in jQuery?

Optimer Dine Lister med jQuery Mobile Listviews

19/04/2026

Rating: 3.96 (1229 votes)

I en verden hvor mobilbrug dominerer, er det afgørende at præsentere information på en overskuelig og intuitiv måde. Traditionelle HTML-lister kan ofte virke klodsede på små skærme, men heldigvis tilbyder jQuery Mobile en elegant løsning: Listview-plugin'et. Dette kraftfulde værktøj tager dine simple ul- eller ol-lister og forvandler dem til dynamiske, mobilvenlige komponenter, der er både funktionelle og æstetisk tiltalende. Uanset om du skal vise en liste over produkter, navigationsmuligheder eller kontaktoplysninger, giver Listview dig mulighed for at skabe en gnidningsfri brugeroplevelse, der føles indbygget i systemet. Lad os dykke ned i, hvordan du kan udnytte Listview til fulde og revolutionere den måde, dine data præsenteres på.

Indholdsfortegnelse

Hvad er en Listview i jQuery Mobile?

Kernen i jQuery Mobiles Listview-funktionalitet ligger i et simpelt HTML-attribut: data-role="listview". Når du tilføjer dette attribut til en standard uordnet liste (

    ) eller en ordnet liste (

      ), tager jQuery Mobile automatisk over og anvender en række foruddefinerede stilarter og adfærd, der er optimeret til mobile enheder. Resultatet er en liste, der ikke blot ser godt ud, men også er nem at interagere med på touchskærme. Hvert listeelement forvandles til en trykbar 'knap', der visuelt guider brugeren og ofte inkluderer en højre pil for at indikere, at der er mere indhold at udforske. Denne automatiske forbedring sparer udviklere utallige timer i CSS- og JavaScript-kodning og sikrer en konsistent brugeroplevelse på tværs af forskellige enheder.

      Grundlæggende Forbundne Lister

      Den mest grundlæggende form for en listview er en simpel liste med links. Forestil dig, at du har en liste over bilmærker, som hver især skal føre til en side med yderligere information. Med jQuery Mobile er opsætningen utrolig ligetil. Du opretter blot en almindelig uordnet liste, og inden i hvert listeelement (

    1. ) placerer du et anker-tag () med dit link. For eksempel: AcuraAudiBMW. Når jQuery Mobile behandler denne markup, vil den automatisk anvende de nødvendige stilarter, så listen fylder hele skærmbredden og får de karakteristiske højre pile. Når en bruger trykker på et listeelement, vil frameworket udløse et klik på det første link inden i elementet, anmode om URL'en via Ajax, oprette den nye side i DOM'en og derefter starte en sidetransition. Det er vigtigt at bemærke, at standardlister uden indrykning har en negativ margin for at sikre, at de strækker sig helt ud til skærmens kanter. Hvis du tilføjer andre widgets direkte over eller under en sådan liste, kan denne negative margin potentielt forårsage overlap, hvilket kan kræve ekstra afstand i din brugerdefinerede CSS.Indlejrede Lister for Hierarkisk NavigationEn af de mest imponerende funktioner ved Listview er evnen til at skabe indlejrede lister. Dette er ideelt, når du har brug for at præsentere data i et hierarkisk format, som for eksempel en menu med underkategorier. Ved at indlejre en ny ul eller ol inden i et eksisterende li-element, kan du automatisk generere nye sider for disse underlister. Når et listeelement med en underordnet liste klikkes, vil frameworket automatisk vise en ny side, der er udfyldt med titlen fra det overordnede element i headeren og listen over underordnede elementer. Disse dynamiske indlejrede lister får som standard en 'b' temafarve (blå i standardtemaet) for at signalere, at du befinder dig på et sekundært navigationsniveau. Lister kan indlejres flere niveauer dybt, og jQuery Mobile håndterer automatisk alle sider og links. Hver indlejret listview-side oprettes, når den overordnede side indlæses, og sidehændelser udløses for hver enkelt indlejret side. Det er vigtigt at sikre, at titlen på undersiderne indeholder teksten fra det første element i det overordnede listeelement, inklusiv dets elementer. For at indstille temafarven for de underordnede listviews skal du blot tilføje data-theme-attributtet til hver indre liste.Nummererede ListerUdover uordnede lister kan Listview også anvendes på ordnede lister (). Dette er særligt nyttigt, når du skal præsentere elementer i en bestemt rækkefølge, som for eksempel søgeresultater, en prioriteret opgaveliste eller en filmkø. Når jQuery Mobile anvender sine forbedringer på en ordnet liste, vil den først forsøge at tilføje numre ved hjælp af CSS. Hvis browseren ikke understøtter dette, vil den falde tilbage til at injicere numrene med JavaScript. Dette sikrer, at dine nummererede lister altid vises korrekt, uanset brugerens enhed eller browser, hvilket giver en konsistent visuel oplevelse.Ikke-Interaktive Lister (Læselister)Nogle gange har du blot brug for at vise en liste af elementer uden at brugeren skal interagere med dem, for eksempel en oversigt over detaljer eller en liste med faste oplysninger. Listviews kan også bruges til at vise ikke-interaktive lister af elementer, typisk som en indsatsliste. Disse lister opbygges fra en uordnet eller ordnet liste, der ikke indeholder linkede listeelementer. Frameworket stiler listeelementerne som knapper, ligesom de andre listetyper, men uden en gradient på baggrunden. Dette giver en ren og tydelig præsentation af information, der ikke inviterer til yderligere interaktion, og er ofte kombineret med data-inset="true" for at give et pænere visuelt udtryk.Split-knap Lister: Flere Handlinger Pr. ElementI situationer hvor der er mere end én mulig handling pr. listeelement, kan en split-knap anvendes til at tilbyde to uafhængigt klikbare elementer — selve listeelementet og et lille pileikon længst til højre. For at oprette et split-listeelement skal du blot tilføje et andet link inden i li og frameworket vil automatisk tilføje en lodret skillelinje, stilisere det andet link som en ikon-kun-pil-knap og indstille title-attributtet for linket til linkets tekst af hensyn til tilgængelighed. Du kan indstille ikonet for den højre split-ikon ved at angive et data-split-icon-attribut på listview'en med et ikonnavn, du ønsker. Standardikonet er 'arrow-r', men kan konfigureres med splitIcon-listview-indstillingen. Ved at tilføje et data-icon-attribut til listeelementet, kan du indstille individuelle ikoner for hver split-knap. Temafarven for split-knappen er som standard 'b' (blå i standardtemaet), men kan indstilles ved at angive et tema-bogstav med data-split-theme-attributtet på listview-niveau eller for individuelle splits med data-theme-attributtet på link-niveau. Dette giver en fleksibel måde at håndtere flere handlinger på.Listeopdelere og AutoudskillereFor at organisere og gruppere listeelementer kan listeelementer omdannes til opdelere. Dette gøres ved at tilføje data-role="list-divider" til et hvilket som helst listeelement. Disse elementer stiles som standard med 'b' bar-temaet (blå i standardtemaet), men du kan angive et tema for opdelere ved at tilføje data-divider-theme-attributtet til liste-elementet (ul eller ol) og angive et tema-bogstav. Endnu mere avanceret er muligheden for automatisk at generere opdelere. En listview kan konfigureres til automatisk at generere opdelere for dens elementer ved at tilføje et data-autodividers="true" attribut til enhver listview. Som standard er teksten, der bruges til at oprette opdelere, det store forbogstav i elementets tekst. Alternativt kan du angive opdelertekst ved at indstille autodividersSelector-indstillingen på listview'en programmatisk. For eksempel: $('#mylistview').listview({ autodividers: true, autodividersSelector: function ( li ) { var out = /* generer en streng baseret på indholdet af li */; return out; } }); Bemærk, at hvis du bruger formaterede listeelementer, der indeholder et flydende element (f.eks. ui-li-aside), vil dette element gå forud for dets søskende uanset rækkefølgen i din HTML-markup. Dette resulterer i, at det første tegn i det flydende element bruges som opdelertekst. Derfor anbefales det at specificere opdelerteksten i dette tilfælde. Hvis nye listeelementer tilføjes til listen eller fjernes fra den, opdateres opdelerne ikke automatisk: du skal kalde refresh() på listview'en for at tegne autoudskillerne igen. Dette er en nødvendig handling for at sikre korrekt visning.Søgefilter og Dynamisk IndholdjQuery Mobile tilbyder en yderst nem måde at filtrere en liste med en simpel klient-side søgefunktion. For at gøre en liste filtrerbar, skal du blot tilføje data-filter="true" attributtet til listen. Frameworket vil derefter tilføje en søgeboks over listen og tilføje adfærden til at filtrere listeelementer fra, der ikke indeholder den aktuelle søgestreng, mens brugeren skriver. Inputfeltets placeholder-tekst er som standard 'Filter items...'. For at konfigurere placeholder-teksten i søgeinputfeltet, kan du enten binde til mobileinit-hændelsen og indstille $.mobile.listview.prototype.options.filterPlaceholder-indstillingen til en streng efter eget valg, eller bruge data-attributtet data-filter-placeholder på din listview. Som standard arver søgeboksen sit tema fra sin forælder. Søgeboksens tema kan konfigureres ved hjælp af data-attributtet data-filter-theme på din listview. Hvis du ønsker at ændre den måde, listeelementer filtreres på, f.eks. fuzzy-søgning eller matchning fra begyndelsen af strengen, kan du konfigurere den callback-funktion, der bruges internt, ved at definere $.mobile.listview.prototype.options.filterCallback under mobileinit eller efter at widget'en er oprettet med $("#mylist").listview('option', 'filterCallback', yourFilterFunction). Enhver funktion, der er defineret for callback'en, vil få tre argumenter: for det første teksten i det aktuelle listeelement, for det andet den værdi, der søges efter, og for det tredje det listeelement, der filtreres. En sand værdi vil resultere i et skjult listeelement. Standard-callback'en, der filtrerer poster uden searchValue som en understreng, er beskrevet nedenfor: function( text, searchValue, item ){ return text.toString().toLowerCase().indexOf( searchValue ) === -1; };. For at filtrere listeelementer efter andre værdier end teksten, tilføj et data-filtertext-attribut til listeelementet. Værdien af dette attribut vil blive sendt som det første argument til filterCallback-funktionen i stedet for teksten. Alternativt kan du bruge et attribut efter eget valg, som defineret på selve listeelementet. Dette giver en dybdegående kontrol over søgelogistikken.Tekstformatering og OptællingerFrameworket inkluderer tekstformateringskonventioner for almindelige listemønstre som overskrifter/beskrivelser, sekundær information og optællinger gennem semantisk HTML-markup. For at tilføje en tælleindikator til højre for listeelementet, ombryd nummeret i et element med klassen ui-li-count. Dette er perfekt til at vise antallet af ulæste beskeder, antallet af varer i en kategori eller lignende. For at tilføje teksthierarki, brug overskrifter (f.eks. <h2>, <h3>) til at øge skriftens vægt og brug paragraffer (<p>) til at reducere vægten. Supplerende information kan tilføjes til højre for hvert listeelement ved at ombryde indholdet i et element med klassen ui-li-aside. Dette er ideelt til datoer, priser eller andre små stykker information, der skal fremhæves uden at dominere hovedteksten. Disse små, men effektive, styling-muligheder bidrager til en professionel og organiseret præsentation af data.Miniaturbilleder og IkonerVisuelle elementer er afgørende for en god brugeroplevelse. For at tilføje miniaturebilleder til venstre for et listeelement, skal du blot tilføje et billede inden i et listeelement som det første underordnede element. Frameworket vil automatisk skalere billedet til 80 pixels kvadratisk, hvilket sikrer en ensartet og pæn visning. Hvis du ønsker at bruge standard 16x16 pixel ikoner i listeelementer, skal du tilføje klassen ui-li-icon til billedelementet. Dette er nyttigt for at tilføje små visuelle hints eller kategoriseringer til dine listeelementer, hvilket gør dem lettere at scanne og forstå for brugeren. Disse visuelle forbedringer gør dine lister mere engagerende.Indsatte Lister for Pæn PræsentationHvis lister er indlejret på en side med andre typer indhold, kan en 'indsat liste' (inset list) pakke listen ind i en blok, der sidder inden i indholdsområdet med lidt margin og afrundede hjørner (temakontrolleret). Ved at tilføje data-inset="true" attributtet til listen (ul eller ol), anvendes det indsatte udseende. Dette giver en pænere og mere integreret visuel præsentation, især når listen ikke fylder hele skærmbredden, og der er andre elementer på siden. Det hjælper med at adskille listen visuelt fra det omkringliggende indhold og giver den et mere afsluttet udseende.Sådan Kalder og Opdaterer du en ListviewAt kalde Listview-plugin'et på en selector er ligetil, ligesom med ethvert andet jQuery-plugin: $('#mylist').listview();. Dette initialiserer Listview-funktionaliteten på elementet med ID'et 'mylist'. Hvis du dynamisk tilføjer elementer til en listview, er det vigtigt at huske at kalde refresh()-metoden på den for at opdatere stilarterne og oprette eventuelle indlejrede lister, der er tilføjet. For eksempel: $('#mylist').listview('refresh');. Det er dog vigtigt at bemærke, at refresh()-metoden kun påvirker nye noder, der er tilføjet til en liste. Dette gøres af hensyn til ydeevnen. Eventuelle listeelementer, der allerede er forbedret af Listview, vil blive ignoreret af opdateringsprocessen. Dette betyder, at hvis du ændrer indholdet eller attributterne på et allerede forbedret listeelement, vil disse ændringer ikke blive afspejlet. Hvis du ønsker, at et listeelement skal opdateres, skal du erstatte det med frisk markup, før du kalder refresh(). Denne detalje er afgørende for korrekt dynamisk håndtering.Ofte Stillede Spørgsmål (FAQ)Q: Hvorfor vises mine lister ikke korrekt, selvom jeg har tilføjet data-role="listview"?A: Sørg for, at du har inkluderet jQuery og jQuery Mobile bibliotekerne korrekt i din HTML-fil. Rækkefølgen er vigtig: jQuery skal indlæses før jQuery Mobile. Derudover skal data-role="listview" attributtet være tilføjet direkte til din ul eller ol tag.Q: Hvordan opdaterer jeg en listview efter at have tilføjet eller fjernet elementer via JavaScript?A: Efter at have manipuleret DOM'en med nye listeelementer, skal du kalde $('#dinListeID').listview('refresh');. Dette fortæller jQuery Mobile, at den skal genanvende sine stilarter og logik på de nye elementer. Husk, at refresh() kun påvirker nye elementer; hvis du ændrer et eksisterende element, skal du erstatte det med frisk markup, før du kalder refresh().Q: Kan jeg tilpasse søgefilterets funktionalitet, f.eks. for at søge i specifikke data-attributter?A: Ja, absolut. Du kan tilpasse søgefilterets adfærd ved at definere din egen filterCallback funktion. Denne funktion modtager listeelementets tekst, søgeværdien og selve listeelementet. Du kan også tilføje et data-filtertext attribut til dine listeelementer for at specificere en alternativ tekst, der skal søges i, i stedet for den synlige tekst. Dette giver dig fuld kontrol over søgelogikken.Q: Er det muligt at have listviews, der ikke fører til nye sider?A: Ja, det er det. Disse kaldes 'læselister' eller 'read-only lists'. Du opretter dem ved at undlade at inkludere et a-tag inden i dine li-elementer. De vil stadig blive stylet som listeelementer, men uden den interaktive pil eller funktionalitet til at navigere til en ny side. De bruges ofte med data-inset="true" for at give dem et pænt, afgrænset udseende.jQuery Mobiles Listview-plugin er et uundværligt værktøj for enhver, der udvikler mobilvenlige webapplikationer. Det forenkler processen med at skabe komplekse, interaktive og visuelt tiltalende lister, uanset om det er simple navigationsmenuer, dynamiske søgeresultater eller hierarkisk organiserede data. Ved at udnytte de forskellige attributter og metoder, som frameworket stiller til rådighed, kan du skræddersy dine lister til at opfylde præcist dine behov og give dine brugere en fremragende oplevelse. Med viden om grundlæggende opsætning, indlejrede lister, søgefiltre og opdateringsmekanismer er du godt rustet til at mestre Listview og løfte dine mobilprojekter til nye højder. Gå i gang med at eksperimentere, og opdag selv, hvor kraftfuld og fleksibel denne komponent er!

Hvis du vil læse andre artikler, der ligner Optimer Dine Lister med jQuery Mobile Listviews, kan du besøge kategorien Mobiludvikling.

Go up