Hva er jquery brukergrensesnitt. Installere jQuery UI-biblioteket

jQuery UI (User Interface)-biblioteket er et sett med malelementer for å lage et brukergrensesnitt og er en del av jQuery-biblioteket. Brukergrensesnitt refererer til interaksjonen mellom brukeren og nettsiden.

Hovedmålet med jQuery UI-biblioteket er å gjøre livet enklere for webutviklere slik at de ikke kaster bort tid på å utføre samme type oppgaver. De vanligste JavaScript-skriptene på nettsteder er samlet i ett bibliotek, og utviklere trenger bare å ta og bruke de nødvendige parameterne og metodene. Det har gått mye raskere å utvikle brukergrensesnitt.

Kalendere, skyveknapper og popup-vinduer som brukes på nettsteder har allerede blitt et obligatorisk attributt. Så hvorfor trenger en utvikler å skrive kode fra bunnen av hver gang? Når han kan tilpasse en ferdig mal og bruke den på nettsiden sin.

Kobler til jQuery UI

Offisiell nettside: https://jqueryui.com/

jQuery UI-biblioteket kan lastes ned til datamaskinen din eller kobles til via en CDN-kobling.

Tilkobling via CDN



Du har to alternativer for å laste ned biblioteket.

Tilpasset nedlasting

Du trenger definitivt ikke å laste ned hele biblioteket hvis du bare skal bruke enkelte komponenter. På Download Builder-siden fjerner du merket for alle boksene bortsett fra komponentene du trenger. For eksempel, hvis du bare trenger trekkspill-widgeten, sett en hake i avmerkingsboksen ved siden av den, og siden vil fortelle deg hvilke elementer som vil være nødvendig for arbeidet. Avmerkingsboksene vil bli plassert automatisk der det er nødvendig, og du vil ikke laste ned unødvendige filer, noe som vil ha en positiv effekt på nettstedets lastehastighet.

Før du klikker på nedlastingsknappen, velg et passende tema for en vakker design av komponentene. Du kan se på den visuelle utformingen av ferdige temaer i Tema/Galleri-delen.

For å bygge inn komponenter allerede i et stilisert nettsted, er temadesigneren mer egnet for deg - ThemeRoller, gå til Tema-delen. Når du endrer kontrollpanelet for utseende, vil du umiddelbart se hvordan alle widgets ser ut. Etter at du er ferdig med å lage utseendet til elementet, klikker du på nedlastingsknappen og laster bare ned de valgte elementene og temaet, noe som er veldig praktisk.

Full nedlasting - Rask nedlasting

Situasjonen der du trenger hele biblioteket er usannsynlig, med mindre du ser på kildekoden. For å laste ned den nyeste versjonen, klikk på knappen: Stabil.

Det nedlastede biblioteket er koblet til på samme måte som via CDN, med den eneste forskjellen at URL-ene til lenkene vil føre til mappen der du legger disse filene på hostingen din.



I Demo-delen kan du tydelig se hvilke oppgaver (demo-eksempler) på siden som kan løses ved hjelp av biblioteket.

La oss se på eksempelet på en widget - Verktøytips. Hensikten med denne widgeten er å vakkert åpne verktøytipset som er spesifisert i tittelattributtet.

Vi lager HTML-strukturen som vanlig. I avsnitt p plasserer vi et inndatafelt for din aldersinntasting. I tekstfeltet angir vi tittelattributtet med tekst "Vennligst oppgi din alder". Vi vil bruke verktøytips-widgeten på dette elementet.



Din alder:


Etter å ha lastet DOM-treet, vil vi på dokumentobjektet kalle verktøytipsmetoden. Vi får tilgang til hele siden (dokumentet) på en gang slik at denne metoden kan brukes på andre sideelementer. Etter å ha kalt verktøytipsmetoden, vil tittelattributtverdiene vises i et verktøytips.

Dette er min formel for å lage en enkel crawler i Node.js. Dette er hovedårsaken til at du ønsker å manipulere DOM på serversiden og er sannsynligvis grunnen til at du er her.

Bruk først forespørselen for å laste siden som skal analyseres. Når innlastingen er fullført, håndter den med cheerio og begynn å manipulere DOM-en akkurat som du ville gjort med jQuery.

Arbeidseksempel:

Var request = require("request"), cheerio = require("cheerio"); function parse(url) ( request(url, function (error, response, body) ( var $ = cheerio.load(body); $(".question-summary .question-hyperlink").each(function () ( konsoll .info($(this).text()); )) ) parse("http://stackoverflow.com/");

Dette eksemplet vil vise i konsollen alle de viktigste spørsmålene som vises på SO-hjemmesiden. Dette er grunnen til at jeg elsker Node.js og dets fellesskap. Enklere kan det ikke bli :-)

Installasjonsavhengigheter:

npm-forespørsel om å installere cheerio

Og kjør (hvis skriptet er over i crawler.js-filen):

Koding

Noen sider vil ha ikke-engelsk innhold i en bestemt koding, og du må dekode det til UTF-8. For eksempel vil en side på brasiliansk portugisisk (eller et annet språk med latinsk opprinnelse) mest sannsynlig være kodet i ISO-8859-1 (a.k.a. "latin1"). Når dekoding er nødvendig, foreslår jeg at forespørselen ikke tolker innholdet på noen måte og i stedet bruker iconv-lite for å gjøre jobben.

Arbeidseksempel:

Var request = require("request"), iconv = require("iconv-lite"), cheerio = require("cheerio"); var PAGE_ENCODING = "utf-8"; // endre for å matche sidekodingsfunksjonen parse(url) ( request(( url: url, encoding: null // tolk ikke innhold ennå ), funksjon (feil, respons, body) ( var $ = cheerio.load(iconv. decode(body, PAGE_ENCODING)); $(".question-summary .question-hyperlink").each(function () ( console.info($(this).text()); )) ) parse( "http: //stackoverflow.com/");

Før du starter, installer avhengigheter:

npm-forespørsel om å installere iconv-lite cheerio

Og endelig:

Følger lenker

Neste trinn er å følge lenkene. La oss si at du vil liste opp alle plakatene fra hvert toppspørsmål på SO. Du bør først liste opp alle de viktigste spørsmålene (eksempel ovenfor) og deretter angi hver lenke, analysere hver side med spørsmål for å få en liste over brukerne som er involvert.

Når du begynner å følge lenkene, starter tilbakeringingshelvetet. For å unngå dette bør du bruke en slags løfter, futures eller noe annet. Jeg har alltid asynkron i verktøykassen min. Så her er et fullstendig crawler-eksempel som bruker asynkron:

Var url = require("url"), request = require("request"), async = require("async"), cheerio = require("cheerio"); var baseUrl = "http://stackoverflow.com/"; // Henter en side og returnerer en tilbakeringing med en $-objektfunksjon getPage(url, parseFn) ( request(( url: url ), function (error, response, body) ( parseFn(cheerio.load(body)) )); ) getPage(baseUrl, function ($) ( var spørsmål; // Få liste med spørsmål spørsmål = $(".question-summary .question-hyperlink").map(function () ( return ( tittel: $(this). text(), url: url.resolve(baseUrl, $(this).attr("href")) )).get().slice(0, 5); // limit to the top 5 questionnaires // For hver question async.map(questions, function (question, questionDone) ( getPage(question.url, function ($$) ( // Get list of users question.users = $$(".post-signature .user-details a" ).map(function () ( return $$(this).text(); )). questionDone(null, question )); kalt av async når alle spørsmål har blitt analysert questionWithPosters.forEach(function (question) ( // Skriver ut hvert spørsmål sammen med brukerlisten console.info(question.title); question.users.forEach(funksjon (bruker) ( console.info("\t%s", bruker); )); )); )); ));

Spørsmål: Feil jQuery-tilkobling i Wordpress


Når du kobler til en plugin i et WordPress-innlegg, ser ikke plugin-en jquery og konsollen svarer naturlig:

JQuery(...).rotator er ikke en funksjon
I den samme oppføringen, rett før du kobler til plugin-modulen, er det:

Javascript
1 2 3 < script>if (window.jQuery ) ( alert("ss"); )


Som returnerer ss. Jeg koblet den til functions.php, feil i header.php, installerte en plugin for å koble til jquery på sider - faen, det fungerer ikke.

På forhånd tusen takk til alle som tok hensyn.

Svar:

Moderatorens kommentar
Ruslaner___, hmm, kryssposting på forumet er forbudt
advarsel til deg

Spørsmål: Koble til JQuery UI


Jeg prøver å koble til JQuery UI som følger. Mellom head-taggene legger jeg til biblioteker og en css-fil:
HTML5-kode
1 2 3
HTML5-kode
1 2 3 4 5 6 7 8 9 10 11 12 $("#slider").slider(( område: "min", min: 1, maks: 100, verdi: 37, lysbilde: function(event, ui) ( $("#amount").val("$ " + ui.verdi); ) )); $("#amount").val("$" + $("#slider").slider("verdi"));

Og mellom body-taggene prøver jeg å vise den samme glideren

Som et resultat blir ingenting sendt ut. Jeg sjekket med firebug, ingen feil ble funnet. Hva bør jeg gjøre for å få det til å fungere?

Svar: pro1004ok,

Javascript-kode
1 2 3 4 5 $(funksjon () ( // all jQuery-koden her) );

Spørsmål: Koble til jQuery


For en dum ting at jQuery ikke fungerer.
HTML5
1 2 3 4 5 6 7 8 9 10 11 12 Nettsted< script type= "text/javascript" src= "js/jquery-ui-1.8.12.custom.min.js" >

Det er alt! Etter dette kan du bruke jQuery UI-funksjoner på siden din. For eksempel ved å bruke en linje med JavaScript-kode for å gjøre et vanlig element drabart:

~lt~!DOCTYPE html~gt~ ~lt~html~gt~ ~lt~head~gt~ ~lt~meta http-equiv="Content-Type" content="text/html; charset=UTF-8" / ~gt~ ~lt~script src="http://code.jquery.com/jquery-1.8.3.js"~gt~~lt~/script~gt~ ~lt~script src="/ui/jqueryui .custom.js"~gt~~lt~/script~gt~ ~lt~link type="text/css" href="/ui/jqueryui.custom.css" rel="stylesheet" /~gt~ ~lt ~style~gt~ body(font:9pt Arial,sans-serif;) p(farge:#888; margin:8px 0 12px 0) #draggable(width:125px; height:125px; padding:0.5em; border:1px solid #ddd; bakgrunnsfarge:#eee) ~lt~/style~gt~ ~lt~/head~gt~ ~lt~body~gt~ ~lt~div id="draggable"~gt~ ~lt~p ~gt~Dragbart element~lt~/p~gt~ ~lt~/div~gt~ ~lt~script~gt~ $("#draggable").draggable(); // denne kodelinjen som gjør elementet drabart ~lt~/script~gt~ ~lt~/body~gt~ ~lt~/html~gt~

Jobber med plugins

All adferd og widget-plugins fungerer på samme måte. Hver jQuery UI-plugin er representert av én hovedmetode som kalles på de valgte elementene. Navnet samsvarer alltid med navnet på plugin-en. Ved å bruke denne metoden kan du instansiere (installere) en plugin på elementer, finne ut og endre plugin-egenskaper, installere hendelsesbehandlere, og også kjøre plugin-funksjoner, som vanligvis kalles metoder (selv om de ikke er metoder i den vanlige betydningen av dette konseptet ).

Instantiering (installasjon)

For å installere en plugin på sideelementer, velg bare de nødvendige elementene ved hjelp av jQuery og ring deretter plugin-metoden på dem (navnet på som alltid samsvarer med navnet på pluginet):

Metoder

Vanligvis betyr en metode for et objekt i javascript en funksjon som kalles på dette objektet som følger:

obj.A(); // kall metode A på objekt obj obj.B (); // kall metode B på objekt obj

Imidlertid, innenfor rammen av å jobbe med spesifikke jQuery UI-plugins, kalles metoder denne formen for opptak:

$("#someId" ) .plasinName ( "metodenavn", metodeparametere) ;

For eksempel:

Egenskaper

Hvert plugin har en rekke egenskaper (beskrivelsene deres finner du i dokumentasjonen til de tilsvarende pluginene). Hver egenskap kan angis på det tidspunktet plugin-en instansieres. For å gjøre dette, når du installerer plugin-modulen på et element, må du sende et objekt med egenskaper i formatet (egenskapsnavn_1:verdi_1, eiendomsnavn_2:verdi_2, ...):

// lag en dialogboks fra elementet med id=someId ved å bruke // dialog-pluginen og spesifiser en tittel for vinduet $("#someId") .dialog (( tittel: "Message" ) ); // lag en kalender fra den første div på siden ved å bruke // datepicker-plugin, og spesifiser minimums- og maksimumsdatoen $("div:first") .datepicker (( minDate: new Date(2007, 1 - 1, 1 ) , maxDate: new Date(2013, 1 - 1, 1) );

I tillegg kan verdien av en hvilken som helst eiendom bli funnet ut eller endret etter at plugin-modulen har blitt instansiert. For å gjøre dette må du bruke "alternativ"-metoden:

// finn ut tittelen på dialogboksen var dialogTitle = $("#someId") .dialog ("option" , "title" ) ; // endre tittelen ved å legge til prefikset "#1 " $("#someId") .dialog ("option", "title" , "#1 " + dialogTitle) // endre minimumsdatoen i kalenderen // som er installert på den første div på siden $("div:first" ) .datepicker ("opsjon", "minDate" , new Date(2008 $("selector" ) .dialog (( close : function (event, ui) (...)));

Lage dine egne plugins

I tillegg til å organisere mange praktiske og intuitive plugins, gir jQuery UI et middel der du kan lage lignende plugins selv - UI Widget Factory. En av dens store fordeler er at den organiserer noen OOP-funksjoner som lar deg endre eksisterende widgeter og lage dine egne widgethierarkier.

jQuery UI er et sett med widgets og plugins fra jQuery-utviklerne selv. Etter min mening må dette verktøyet studeres så mye som nødvendig for ikke å skrive dine egne "sykler". Du kan laste ned og lese om dette tillegget for jQuery på prosjektets hjemmeside - http://jqueryui.com/.

Hva trenger vi å vite om widgets og plugins? Den første er hva de er, og den andre er hvordan de fungerer. Jeg skal prøve å dvele ved disse to punktene.

Interaktivitet

Jeg starter med nyttige plugins som kan gjøre livet enklere når du lager interaktive grensesnitt:

  • Dragbar – denne komponenten lar deg gjøre et hvilket som helst DOM-element drabart med musen
  • Slippbar er en logisk utvidelse av Draggable-komponenten; nødvendig for å jobbe med beholdere der du kan dra og slippe elementer
  • Kan endre størrelse – som navnet antyder, lar deg endre størrelse på alle DOM-elementer
  • Valgbar – lar deg organisere "utvalget" av elementer; praktisk å bruke for å organisere bildebehandling
  • Sorterbar – sorterer DOM-elementer
Widgets

Widgets er allerede en omfattende løsning som inneholder ikke bare JavaScript-kode, men også en del implementering av HTML og CSS:

Alle widgeter og plugins er knyttet til jQuery UI-kjernen, men det er også avhengigheter mellom pluginene selv, og det er verdt å ha dem i bakhodet. Men ikke bekymre deg – når du bygger en jQuery UI-pakke, sjekkes alle avhengigheter automatisk, dvs. når du trenger en tidligere ukoblet widget, er det bedre å laste ned sammenstillingen på nytt.

Verktøy

Vi har ikke mange verktøy - her er en nyttig posisjonsplugin som lar deg kontrollere plasseringen av DOM-elementer - http://jqueryui.com/position/, og det er også en fabrikk for å lage widgets, men jeg skal snakke om det litt senere.

Effekter

Blant effektene jQuery UI gir, fremhever jeg fire punkter:

  • Fargeanimasjon
  • Klassebytteanimasjon
  • Effektsett
  • Utvide lettelsesmuligheter

"Effects Core"-komponenten er ansvarlig for fargeanimasjon, som lar deg animere fargeendringer ved å bruke ".animate()"-funksjonen:

$("#my" ).animate(( bakgrunnsfarge: "svart" ), 1000 );

Ja, ja, grunnleggende jQuery kan ikke gjøre dette, men jQuery UI lar deg animere følgende parametere:

  • bakgrunnsfarge
  • borderBottomColor
  • borderLeftColor
  • borderRightColor
  • borderTopColor
  • farge
  • disposisjonFarge

En annen funksjon inneholdt i "Effects Core" er animasjonen av endringer i klassen til et DOM-element, dvs. når du tilordner en ny klasse til et element, i stedet for den vanlige øyeblikkelige bruken av nye CSS-egenskaper, vil du se en animasjon av disse egenskapene fra de nåværende til de som er spesifisert i den tildelte klassen. For å bruke denne funksjonaliteten trenger vi gamle venner - metodene ".addClass()", ".toggleClass()" og ".removeClass()", med bare én forskjell - når du kaller metoden, må animasjonshastigheten spesifiseres som den andre parameteren:

$("#my" ).addClass("aktiv" , 1000 ); $("#my" ).toggleClass("aktiv" , 1000 ); $("#my" ).removeClass("aktiv" , 1000 );

Hvis du fra forrige avsnitt ikke har en forståelse av hva som skjer, så er denne koden for deg:

#my ( font-size :14px ; ) #my .active ( font-size :20px ; ) $(function () ( $("#my" ).addClass("active" , 1000 ); // her snur det ut på samme måte neste kall $("#my" ).animate(("font-size" :"20px" ), 1000 ));

Det er også en ".switchClass()"-metode som erstatter en klasse med en annen, men jeg har aldri funnet den nyttig.

Jeg vil ikke snakke lenge om settet med effekter; det er bedre å se dem i aksjon på siden http://jqueryui.com/effect/. For å jobbe med effekter vises metoden ".effect()", men det er bedre å ikke bruke den alene, fordi brukergrensesnittet har utvidet funksjonaliteten til de innebygde metodene ".show()", ".hide( )" og ".toggle()". Nå, ved å sende navnet på effekten som animasjonshastighetsparameteren, får du ønsket resultat:

$("#my" ).hide("puff" ); $("#my" ).show("transfer" ); $("#my" ).toggle("eksplodere" );

Jeg vil gi en liste over effekter, kanskje noen vil huske: blind, sprett, klipp, slipp, eksploder, fold, fremhev, pust, pulser, skaler, riste, størrelse, skyv, overføring.

Hvis du på noe tidspunkt trenger å gjøre endringer i temaet, åpne filen "jquery-ui-#.#.##-custom.css" og finn linjen som starter med teksten "For å vise og endre dette temaet, besøk http:..." Følg lenken som følger med og bruk ThemeRoller for å gjøre de nødvendige endringene.

Vi skriver vår egen widget

Utgangspunktet for deg når du skal skrive en widget for jQuery UI vil være den offisielle dokumentasjonen, men siden ikke alle har gode engelskkunnskaper, vil jeg prøve å oversette og tilpasse informasjonen som presenteres i den.

Det første som er verdt å snakke om er at reglene for å skrive plugins for jQuery er for imponerende, noe som ikke bidrar til kvaliteten. Da vi opprettet jQuery UI, bestemte vi oss for å standardisere prosessen med å skrive plugins og widgets. Jeg kan ikke si hvor vellykket ideen var, men den var klart bedre enn den var. Jeg starter med å beskrive rammeverket for widgeten din:

$.widget("book.expose" , ( // standardinnstillinger: (farge: "rød" ), // widgetinitialisering // gjør endringer i DOM og legg til behandlere _create: function () ( dette .element; / / søkte på objektet i jQuery wrapper dette .navn; // navn - eksponer dette .navnerommet; // mellomrom - bestill dette .element.on("klikk." +dette .eventNamespace, funksjon () ( console .log("klikk " ); )); _destroy-metoden skal være det motsatte av _create // den skal fjerne alle endringer som er gjort i DOM og fjerne alle behandlere, hvis noen, _destroy: function () ( this .element.off("." +this .eventNamespace); ) ));

La meg forklare for de som ikke har lest kommentarene:

alternativer – lagring av widgetinnstillinger for et spesifikt element

Create() – er ansvarlig for å initialisere widgeten – her skal endringer skje i DOM og hendelsesbehandlere skal "henges"

Destroy() er antipoden til "_create()" - den skal rydde opp i alt vi har forsøplet

SetOption (nøkkel, verdi) - denne metoden vil bli kalt når du prøver å endre noen innstillinger:

$("#my" ).expose((key:value))

Et observant øye vil legge merke til at alle de oppførte metodene begynner med et understrek - dette er en måte å fremheve "private" metoder som ikke er tilgjengelige for utførelse. Hvis vi prøver å kjøre "$("#my").expose("_destroy")", får vi en feilmelding. Men husk - dette er bare en avtale, hold den!

For å omgå personvernavtalen kan du bruke "data()"-metoden:

$("#my" ).data("expose" )._destroy() // sted for smileyen "(ond)"

I dette eksemplet prøvde jeg å sette en god tone for å skrive widgets - jeg "hengte" hendelsesbehandlere i navneområdet. Dette vil gi deg muligheten til å kontrollere hva som skjer i fremtiden uten å måtte gå inn i widgetkoden. "Sann historie".

Koden beskrevet i "_destroy()"-metoden er overflødig, fordi den er allerede utført i den offentlige "destroy()". Presentert her for klarhet.

Og for de late, for ikke å skrive "eventNamespace" i hendelsesbehandlere hver gang, la utviklerne til to metoder i versjon 1.9.0: "_on()" og "_off()". Den første tar to parametere:

  • DOM-element eller velger eller jQuery-objekt
  • et sett med hendelsesbehandlere som et objekt

Alle oppførte hendelser vil "henge" i "eventNamespace", dvs. resultatet vil antagelig være det samme:

this ._on(dette .elementet, ( mouseover:function (event ) ( console .log("Hei mus" ); ), mouseout:function (event ) ( console .log("Hei mus" ); ) ));

Den andre metoden, "_off()", lar deg selektivt deaktivere behandlere:

this ._off(dette .elementet, "museut-klikk" );

Vel, rammen er en langbåt, det er på tide å gå videre til funksjonalitet. La oss legge til en vilkårlig funksjon med vilkårlig funksjonalitet:

CallMe:function () ( console .log("Hallo?"); )

Vi kan enkelt få tilgang til denne funksjonen både fra andre widgetmetoder og utenfra:

// fra innsiden av denne .callMe() // fra utenfor $("#my" ).expose("callMe" )

Hvis funksjonen din tar parametere, sendes de på følgende måte:

$("#my" ).expose("callMe" , "Hei!" )

Hvis du ønsker å nå en widgetmetode i hendelsesbehandleren, så ikke glem det variable omfanget og gjør følgende manøver:

( _create: function () ( var self = this ; // her er det! this .element.on("click." +this .eventNamespace, function () ( // bruk selv her, fordi dette peker allerede til // element som vi klikker self.callMe( )) ) )

Ok, la oss gå, la oss nå snakke om hendelsene. For mer fleksibel utvikling og implementering av widgets, er funksjonalitet gitt for å lage vilkårlige hendelser og "lytte" til dem:

// trigger hendelsen denne ._trigger("incomingCall" ); // abonner på hendelsen når widgeten er initialisert $("#my" ).expose(( incommingCall: function (ev ) ( console .log("din-don" ); ) )) // eller etter, ved å bruke hendelsesnavn // widgetnavn + hendelsesnavn $("#my" ).on("exposeincomingCall" , function () ( console .log("tru-lya-lya" ) ));

Det er mye materiale, jeg forstår, men jeg vil også legge til en beskrivelse av flere metoder som kan kalles fra selve widgeten:

Delay() – denne funksjonen fungerer som “setTimeout()”, bare konteksten til den beståtte funksjonen vil peke til selve widgeten (dette er for ikke å bry seg med omfanget)

Hoverable() og _focusable() – disse metodene må mates med elementer som det er nødvendig å lytte etter "hover" og "focus" hendelser for å automatisk legge til "ui-state-hover" og "ui-state" -fokus” klasser til dem når de oppstår disse

Hide() og _show() – disse to metodene dukket opp i versjon 1.9.0, de ble laget for å standardisere oppførselen til widgets ved bruk av animasjonsmetoder; Innstillinger er vanligvis skjult i alternativer under henholdsvis "skjul" og "vis"-tastene. Metodene skal brukes som følger:

( alternativer: ( hide: ( effekt: "slideDown" , // innstillinger tilsvarer varighet for anrop: 500 // .slideDown(500) ) ) ) // kall til _hide() og _show() skal brukes inne i widgeten this ._hide(dette .elementet, dette .options.hide, funksjon () ( // dette er vår tilbakeringingsfunksjonskonsoll .log("skjult" ); ));

Det er et par flere metoder som ble implementert før oss:

( enable: function () ( return this ._setOption("disabled" , false ); ), disable: function () ( return this ._setOption("disabled" , true ); ) )

Faktisk skaper disse funksjonene et synonym for å ringe:

$("#my" ).expose(( "disabled" : true )) // eller false

Vår oppgave er ganske enkelt å spore dette flagget i "_setOption()"-metoden.