Wat is er veranderd in jQuery UI 1.8 - Plus gratis boeken!

jQuery UI 1.8 bevindt zich momenteel in de fase van de release candidate en zal, behoudens de ontdekking van een grote bug of tekortkoming, binnenkort de huidige stabiele release worden van de officiële UI-bibliotheek van jQuery. Dus wat is er veranderd sinds de laatste huidige stabiele release van 1.7.2? Een van de belangrijkste verschillen is natuurlijk dat de bibliotheek nu draait op de nieuwste versie van jQuery zelf - versie 1.4.1, maar er zijn veel andere veranderingen geweest, waaronder de toevoeging van een aantal geweldige nieuwe componenten, die we zullen bekijken over de loop van dit artikel.


Gratis exemplaren van jQuery UI 1.7

De auteur van dit artikel, Dan Wellman, heeft recent jQuery UI 1.7 uitgegeven van Packt Publishing. Het is een fantastisch boek en ik ben verheugd aan te kondigen dat we een handvol exemplaren hebben om willekeurig uit te geven. Laat een opmerking over het artikel achter en u wordt automatisch ingeschreven in de tekening. Kom maandag terug om te kijken of je een winnaar bent!


1. Bugzappen

Deze versie van de bibliotheek brengt een aantal bugfixes voor een aantal belangrijke componenten, waaronder de Datepicker- en Dialoog-widgets en de helpers voor Droppable, Resizable en Selectable-interactie. Geen van de bugs waren show-stoppers, maar toch, het opruimen van de bugs is een cruciaal onderdeel van de voortdurende progressie van de bibliotheek. Een belangrijk punt om op te merken is dat het BeforeClose gebeurtenis van de Dialoog-widget is verouderd en vervangen door BeforeClose zodat het dezelfde naamgevingsconventie volgt als de gebeurtenissen van andere componenten.

Naast bugs in de code zijn ook verschillende styling- en toegankelijkheidsproblemen aangepakt; met name de titeltekst van Dialoog-widgets kan niet meer verdwijnen achter het pictogram Sluiten en de toetsenbord-navigatie van de nieuwe knopwidget is verbeterd. Zie de changelog op http://jqueryui.com/docs/Changelog/1.8rc1 voor een volledige lijst van alle bugfixes die zijn opgenomen in versie 1.8


2.Positioning

jQuery UI heeft nu een uniek positioneringssysteem dat kan worden gebruikt wanneer een widget moet worden gepositioneerd ten opzichte van een ander element, zoals een vervolgkeuzemenu of zwevende knopinfo. Met het hulpprogramma Positie kunnen we eenvoudig opgeven, met behulp van een reeks eenvoudige tekenreeksen, welk deel van het gepositioneerde element moet worden vastgesteld op welk deel van het opgegeven doelelement. Dus bijvoorbeeld de "linksboven" punt van één element kan worden vastgesteld op de "rechts onder" van een ander gespecificeerd element.

Het hulpprogramma beschikt ook over een robuust systeem voor botsingdetectie dat voorkomt dat kijkers worden blootgesteld aan onooglijke werkbalken als het geplaatste element te dicht bij de rand van het kijkvenster komt of anders de gepositioneerde plaats niet kan innemen.

De API voor dit hulpprogramma is compact, met slechts 7 configureerbare opties in dit stadium. Dit geeft ons echter alle controle die we nodig hebben en stelt ons in staat om op te geven tot 81 mogelijke combinaties van positionering; opties die we kunnen configureren, omvatten het volgende:

op:
Verwijst naar de positie op het doelelement waarop het te plaatsen element zal worden bevestigd; de methode accepteert een enkele reeks bestaande uit de waarde voor de horizontale as (ofwel rechts, centrum, of links) gevolgd door de waarde voor de verticale as (ofwel top, centrum, of bodem). Er is geen onderscheidend karakter tussen de 2 waarden.
bgiframe:
Als de bgiframe-plug-in beschikbaar is op de pagina, past deze optie een iframe-schijf toe op het gepositioneerde element, wat kan helpen voorkomen dat bepaalde elementen boven de gepositioneerde inhoud in IE6 worden weergegeven.
botsing:
Deze optie bepaalt hoe botsingen worden afgehandeld; het accepteert een van de volgende strings: omdraaien, passen of geen. De standaard is omdraaien, waardoor het element dat wordt gepositioneerd de positie ten opzichte van het doelelement, bijvoorbeeld. "rechter midden" zal worden "links midden".
mijn:
Verwijst naar het element dat wordt gepositioneerd; accepteert dezelfde waarden als op.
van:
Accepteert een jQuery-selector die het doelelement opgeeft.
compenseren:
Geef een aantal pixels op om het element dat op het doelelement wordt geplaatst te verschuiven.
gebruik makend van:
Met deze optie kunt u een callback-functie gebruiken, waarmee u de positionering van het element kunt animeren.

3. Autocomplete

Een van mijn favoriete widgets is terug als een officiële UI-component! Autocomplete was een beta-widget in een vroege 1.6-versie van de bibliotheek en is nu terug na een volledige refactor. Het is gekoppeld aan tekstinvoer op de pagina en levert een lijst met mogelijke keuzes wanneer een bezoeker begint te typen in het tekstveld.

De widget kan zijn gegevens (de overeenkomende items in het suggestiemenu) van verschillende bronnen opnemen, waaronder een standaard JavaScript-array, JSON via een AJAX-aanvraag of een flexibele callback-functie die elke gegevensbron kan implementeren en een aangepast antwoord kan retourneren om weer te geven in het suggestiemenu.

Autocomplete is een zeer configureerbare widget en beschikt over een volledige API met opties, methoden en gebeurtenissen om gebruik van te maken. Het is volledig themabel via SteamRoller en volledig navigeerbaar met het toetsenbord. Al met al brengt dit onderdeel veel functionaliteit naar uw pagina's. Op een later moment kan caching ook een configureerbaar gedrag zijn.

Laten we eens kijken naar de API; het bevat de volgende drie configuratie-opties:

vertraging:
We kunnen het aantal milliseconden opgeven dat de widget moet wachten voordat het suggestiemenu wordt weergegeven wanneer de bezoeker begint te typen in de invoer.
minimale lengte:
Deze optie heeft een geheel getal dat verwijst naar het aantal tekens dat in de invoer moet worden ingevoerd voordat het suggestiemenu wordt weergegeven.
bron:
We configureren de gegevensbron met behulp van deze optie; mogelijke waarden bevatten een array van strings die de items vertegenwoordigen die in het suggestiemenu worden weergegeven, of een array van objecten waarbij elk object twee eigenschappen bevat - de eerste is het label dat wordt weergegeven in het suggestiemenu, de tweede is de waarde die wordt toegevoegd aan de invoer als een item in het suggestiemenu is geselecteerd. We kunnen ook een enkele string leveren die een externe bron vertegenwoordigt die de gegevens asynchroon kan retourneren, of een callback-functie die de gegevens kan opvragen en deze terugsturen naar de widget in het vereiste formaat.

De volgende twee methoden worden weergegeven door Autocomplete:

dichtbij:
Gebruikt om het suggestiemenu te sluiten.
zoeken:
Voer een zoekopdracht uit van de beschikbare gegevens en toon de suggesties als de term is gekoppeld. Kan een vooraf gedefinieerde waarde aannemen als de term die wordt doorgegeven aan de methode als een argument, of de waarde van het invoerveld waarmee het is geassocieerd.

We kunnen callback-functies ook koppelen aan de volgende aangepaste gebeurtenissen:

verandering:
Ontslagen nadat een item in het suggestiemenu is geselecteerd en het menu is gesloten.
dichtbij:
Ontslagen wanneer het suggestiemenu gesloten is, ongeacht of een item is geselecteerd. Precies de verandering evenement.
focus:
Direct geflit voordat de focus wordt gelegd op een item in het suggestiemenu.
Open:
Ontslagen zodra de gegevens zijn geretourneerd, direct voordat het suggestiemenu wordt weergegeven.
zoeken:
Direct gestart voordat de gegevensbron wordt doorzocht. De zoekopdracht kan worden geannuleerd door terug te gaan vals van een callback-functie gebonden aan deze gebeurtenis.
kiezen:
Deze gebeurtenis wordt geactiveerd wanneer een item uit het menu voordat het menu wordt gesloten.

Als een speciale bonus bevat het bronbestand voor de widget Autocomplete ook de bèta-menawidget, die nog steeds in ontwikkeling is en moet worden uitgegeven in een latere versie van de bibliotheek. Tot nu toe lijkt het een robuuste en aantrekkelijke toevoeging aan de bibliotheek, en kunnen we een ongeordende lijst omvormen tot een aantrekkelijk drop-down of fly-out menu. Veel functies worden ondersteund, waaronder submenu's, pictogrammen, verdelers en zelfs een drill-down menu met broodkruimel.


4. Knop

Met de knopwidget kunnen we aantrekkelijke en functionele knoppen implementeren die kunnen worden geconfigureerd om zich als een bepaald type knop te gedragen; we kunnen bijvoorbeeld standaard drukknoppen kratten, radio-achtige knoppen waar slechts een enkele knop in een set kan worden geselecteerd, of controlestijlknoppen waar elk nummer in een bepaalde set kan worden geselecteerd. Verschillende soorten knoppen met een eenvoudig vervolgkeuzemenu kunnen ook worden gemaakt.

Het is een zeer flexibele widget en kan worden gebouwd met behulp van een verscheidenheid aan onderliggende elementen, waaronder