skik begivenheder, og de særlige begivenheder api i jquery

, særlige begivenheder, og de særlige begivenheder api i jquery,,,,, 1,,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, websider, for det meste er styret af begivenhederne.biblioteker, som f.eks. jquery har givet hjælper metoder til at gøre denne funktion meget lettere at forstå.i denne forelæsning, vil vi se på en udvidelse af disse metoder til at skabe deres egen tradition namespaced begivenheder.,,,,, at begivenhederne i javascript, før den luksus javascript biblioteker,, hvis du ønsker at tilføje et enkelt klik begivenhed, et element, du nødt til at gøre det med at støtte alle browsere:, var elt = dokument. getelementbyid ("# mybtn"); hvis (elt (elt. addeventlistener). addeventlistener ("klik", function() {indberetning ('button klik)})} andre, hvis (elt (elt. attachevent). attachevent ("onclick", function() {indberetning ('button klik)}).} andre (elt.onclick = function() {indberetning ('button klik)}}, nu javascript biblioteker med hjælper metoder til at gøre forvaltningen mere fordøjeligt tilfælde.for eksempel gør det ovenfor i jquery er meget mere begrænset. $("# mybtn"). klik (function() {indberetning ('button klik)}), uafhængigt af deres gennemførelse, er der tre vigtige dele til begivenheder:,, lytter - venter eller lytter til et arrangement til ild., - - udløser tilfælde brand., kontakt - funktion til at blive henrettet, hvor begivenheden er fyret.,, i vores klik begivenhed i begyndelsen af pædagogiske, lytter er klik begivenhed på&#mybtn element skal være sammen.når&#mybtn element er trykket, det forsendelser og vil affyre kontaktperson, som i dette tilfælde er en anonym funktion at vise alert() besked.,, trin 1: oprettelse af vores side, jquery giver os mulighed for at gå et skridt videre og skabe vores egen skik begivenheder.i denne forelæsning, vi vil bruge en unordered liste over en fortegnelse over og tilføje funktioner via skik begivenheder, der vil bryde sammen, og udvide telefonbøger.lad os starte med vores grundlæggende side struktur, der vil blive anvendt i den kommende eksempler. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> \t<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> \t<head> \t\t<title>jQuery Custom Events</title> \t\t<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> \t\t \t\t<style type="text/css"> \t\t\tbody \t\t{background: #fefefe; color: #111; font: 12px Arial, Helvetica, sans-serif;} \t\t\t \t\t\t#tree \t{color: #333; line-height: 14px}\t\t \t\t\t\t.directory \t{list-style-image: url('images/directory.png');} \t\t\t\t.css \t\t{list-style-image: url('images/css.png');} \t\t\t\t.html \t\t{list-style-image: url('images/html.png');} \t\t\t\t.js \t\t{list-style-image: url('images/js.png');} \t\t\t\t.gif, \t\t\t\t.png, \t\t\t\t.jpg \t\t{list-style-image: url('images/image.png');} \t\t</style> \t\t \t</head> \t<body>\t\t \t\t<ul id="tree"> \t\t\t<li>root/ \t\t\t\t<ul> \t\t\t\t\t<li>index.html</li> \t\t\t\t\t<li>about.html</li> \t\t\t\t\t<li>gallery.html</li> \t\t\t\t\t<li>contact.html</li> \t\t\t\t\t<li>assets/ \t\t\t\t\t\t<ul> \t\t\t\t\t\t\t<li>images/ \t\t\t\t\t\t\t\t<ul> \t\t\t\t\t\t\t\t\t<li>logo.png</li> \t\t\t\t\t\t\t\t\t<li>background.jpg</li> \t\t\t\t\t\t\t\t</ul> \t\t\t\t\t\t\t</li> \t\t\t\t\t\t\t<li>js/ \t\t\t\t\t\t\t\t<ul> \t\t\t\t\t\t\t\t\t<li>jquery.js</li> \t\t\t\t\t\t\t\t\t<li>myscript.js</li> \t\t\t\t\t\t\t\t</ul> \t\t\t\t\t\t\t</li> \t\t\t\t\t\t\t<li>css/ \t\t\t\t\t\t\t\t<ul> \t\t\t\t\t\t\t\t\t<li>page.css</li> \t\t\t\t\t\t\t\t\t<li>typography.css</li> \t\t\t\t\t\t\t\t</ul>\t\t\t\t\t \t\t\t\t\t\t\t</li> \t\t\t\t\t\t</ul> \t\t\t\t\t</li> \t\t\t\t</ul> \t\t\t</li>\t\t \t\t</ul> \t\t \t\t<script type="text/javascript" src="http://google.com/jsapi"></script> \t\t<script type="text/javascript"> \t\t\tgoogle.load("jquery", "1"); \t\t\tgoogle.setOnLoadCallback(function() { \t\t\t\t$(function() { \t\t\t\t\taddIcons(); \t\t\t\t\t \t\t\t\t}); \t\t\t\tfunction addIcons() \t\t\t\t{ \t\t\t\t\t$("#tree li").each(function() { \t\t\t\t\t\tif($(this).children("ul").length) \t\t\t\t\t\t{ \t\t\t\t\t\t\t$(this).addClass("directory"); \t\t\t\t\t\t} \t\t\t\t\t\telse \t\t\t\t\t\t{ \t\t\t\t\t\t\tvar txt = $(this).text();\t\t\t\t \t\t\t\t\t\t\tvar fileType =txt. substr (txt. indexof ("") + 1); $(det). addclass (filetype))))); < /manuskript > < /organ > < /html >, her er vi ved at skabe en simpel fortegnelse over ved hjælp af en unordered liste.vi har medtaget jquery fra google jsapi cdn og opfordrede addicons(), som tilføjer billeder af alle dokumenter og mappe, afhængigt af den fil, udvidelse, der er opført på listen.denne funktion er rent æstetisk formål.det er ikke nødvendig for nogen af custom begivenhed kode, vi er ved at gennemføre.resultatet af dette skridt og kan ses her.,,,,, trin 2:. bind() og. trigger(), før vi begynder at lægge vores register over begivenheder, f.eks. vi har brug for en forståelse af, hvordan. bind() og. trigger() arbejde.vi bruger bind() til at fastgøre en begivenhed for alle sammen elementer, der bor på den side.så brug. trigger(), når man ønsker at sende begivenheden.lad os se på en hurtig, f.eks. $("# mybtn"). bind ("klik" funktion (evt) (indberetning ('button klik)}); $("# mybtn"). udløser ("klik"), i kodeksen, når den element med en id 'mybtn er faldet, en advarselsmeddelelse, skal anføres.desuden har vores trigger() faktisk vil affyre klik tilfælde straks, når den side belastninger.bare husk på, at bind() er, hvordan du lægger en begivenhed.mens. trigger() tvinger du tilfælde sendes og henrette tilfælde er kontaktperson.,, trin 3: skik begivenheder med. bind() og. trigger(), metode. bind() er ikke kun begrænset til browser begivenheder, men kan anvendes til at gennemføre deres egen skik begivenheder.lad os begynde med at skabe skik begivenheder, der hedder sammenbrud, og udvide vores register over f.eks. lad os binde et sammenbrud, begivenhed for alle fortegnelser repræsenteret i vores unordered liste. $("# træ li: forældre"). bind ("sammenbrud" funktion (evt) (her finder vi alle elementer, der er forældre, og pas, hvis navn, sammenbrud i. bind() metode.vi har også nævnt det første parameter, evt,, som repræsenterer den jquery begivenhed objekt. $(evt. target). children(). slideup(). end(). addclass ("faldt"), nu vi udvælger det mål af tilfælde og til alle sine børn.plus, vi havde en css klasse, kollapsede, vores register element.}). bind ("udvides" funktion (evt) (vi er at begivenheder og, som vores, udvide begivenhed på denne linje. $(evt. target). children(). slidedown(). end() removeclass ("kollapsede.");}), det stik modsatte af vores, kollaps, begivenhed kontaktperson i, udvide omstændigheder fører vi glide ned af alle børn elementer af registret elementer og fjerne klassen, kollapsede, fra vores mål element.lægger det hele sammen. $("# træ li: forældre"). bind ("sammenbrud" funktion (evt) {% (evt. target). children(). slideup(). end(). addclass ("faldt");}). bind ("udvides" funktion (evt) ($(evt. target). children(). slidedown(). end(). removeclass ("faldt");}), bare denne kode alene vil ikke gøre noget for os, fordi de begivenheder, sammenbrud og udvide er ukendt, og har ingen idé om, hvornår der skal sendes.så tilføjer vi vores. trigger() metode, da vi ønsker, at disse begivenheder, at brand. $("# træ li: forældre"). bind ("sammenbrud" funktion (evt) {% (evt. target). children(). slideup(). end(). addclass ("faldt");}). bind ("udvide" funktion (evt) {% (evt. target). children(). slidedown(). end(). removeclass ("faldt");}) måles. (function() (//greb mellem $(dette). udløser ("sammenbrud")), function() {$(dette). udløser ("udvide");}), hvis vi løber denne kode, vores registre vil nu greb, når trykket mellem fyre, sammenbrud og udvide begivenhed.men hvis du trykker på et indlejrede fortegnelse ser du vores begivenheder er faktisk anvender flere gange pr. museklik.det er på grund af omstændigheder, der bobler.,,, hvis opsamling og boble, når du klik et element på en side, tilfælde rejser, eller bliver taget fra den øverste modervirksomhed, der har en begivenhed, der er knyttet til det tilsigtede mål.det bobler fra bestemt mål op til den øverste modervirksomhed, f.eks. når vi klik css /mappe, vores begivenhed er fanget ved hjælp af aktiver /root /, og derefter css /.det bobler css /, aktiver /, så at heppe.derfor, ikke bliver henrettet tre gange.vi kan korrigere dette ved at tilføje et enkelt betinget i kontakt med målet. hvis (evt.target = = evt. currenttarget) {(evt. target). children(). slideup(). end(). addclass ("faldt");} denne kodeks vil undersøge hver enkelt mål i tilfælde af målet, eller currenttarget.når vi har et match, kun i så fald vil manuskriptet henrette sammenbrud begivenhed.efter en ajourføring af både, sammenbrud og udvide tilfælde vores side vil fungere som forventet.,,, hvis namespacing, en namespace giver baggrund for begivenhederne.- begivenheder, sammenbrud og udvide, er tvetydig.at tilføje en namespace til en jquery skik begivenhed er struktureret, hvis navn, efterfulgt af, namespace,.vi vil gøre vores namespace ringede treeevent, fordi vores begivenheder repræsenterer aktioner og funktionaliteten af et træ mappe struktur.når vi har tilføjet namespaces til vores begivenheder, koden nu vil se sådan her: $("# træ li: forældre"). bind ("kollaps. treeevent" funktion (evt) (hvis (evt.target = = evt. currenttarget) {% (evt. target). children(). slideup(). end(). addclass ("faldt");}}). bind ("udvide. treeevent" funktion (evt) (hvis (evt.target = = evt. currenttarget) {% (evt. target). children(). slidedown(). end(). removeclass ("faldt");}}) måles. (function() {$(dette). udløser ("kollaps. treeevent");}, function() {$(dette). udløser ("udvide. treeevent");}), alle vi, der er nødvendige for at ændre var tilfælde navne i. bind() og. trigger() metoder til både, sammenbrud og udvide, begivenheder.vi har nu en funktionel eksempel med skik namespaced begivenheder. bemærker, er det let at fjerne begivenheder fra elementer, ved hjælp af unbind() metode. $("# træ li: forældre"). slip ("kollaps. treeevent"); //bare fjerne sammenbrud begivenhed $("# træ li: forældre"). slip (". treeevent"); //fjerne alle begivenheder i treeevent namespace < /p >,, særlige begivenheder api, en anden måde at fælde en speciel begivenhed i jquery er at udnytte den særlige begivenheder api - grænseflade.der er ikke meget dokumentation om denne api, men brandom aaron, en central bidragyder af jquery, har skrevet to fremragende blog (http://brandonaaron.net/blog/2009/03/26/special-events og http://brandonaaron.net/blog/2009/06/4/jquery-edge-new-special-event-hooks) til at hjælpe os med at forstå de metoder, der er til rådighed.nedenfor gives en kort redegørelse for metoder, tilføje - svarende til fælde, men kaldes for hvert tilfælde er bundet, fælde - ringede, da begivenheden er bundet, fjerne - svarende til igennem, men kaldes for hver hændelse ubundet., igennem - ringede da begivenhed er ubundet., træner. "når begivenhed er afsendt.,, lad os se på, hvordan vi kan forene vores skik begivenheder i et særligt tilfælde, som vi vil kalde, togglecollapse,., jquery.event.special.togglecollapse = {fælde: funktion (data, namespaces) (for (var jeg i namespaces) (hvis (namespaces [i] = =" treeevent ") (jquery (dette). bind ('click, jquery. tilfælde. togglecollapse. treeevent. kontaktperson)}}}, igennem: funktion (namespaces) (for- var jeg i namespaces) (hvis (namespaces [i] = = "treeevent") (jquery (dette). slip ('click, jquery. tilfælde. togglecollapse. treeevent. kontaktperson)}}}, treeevent: {- funktion (ref.) (hvis (event.target = = begivenhed. currenttarget) (var - elt = jquery (det), var cssclass = "faldt"; hvis (elt. hasclass (cssclass)) (elt. children(). slidedown(). end(). removeclass (cssclass)} andre (elt. children(). slideup(). end(). addclass (cssclass)} event.type = "togglecollapse". jquery. begivenhed. klare. anvendelse (dette argumenter)}}}}; $("# træ li: forældre"). bind ("togglecollapse. treeevent" funktion (evt) {}).lad os tage et kig på den del af afsnit. jquery.event.special.togglecollapse = {fælde: funktion (data, namespaces) (for (var jeg i namespaces) (hvis (namespaces [i] = = "treeevent") (jquery (dette). bind ('click, jquery. tilfælde. togglecollapse. treeevent. kontaktperson)}}}, første linje, jquery.event.special.togglecollapse, skaber en ny begivenhed, togglecollapse,.så har vi vores fælde metode, som gentager over alle namespaces af denne begivenhed.når den konstaterer, treeevent,, binder det klik i forbindelse med de matchede elementer, som vil kalde, jquery.event.special.togglecollapse.treeevent.handler, når begivenheden er fyret.bemærk, at vi bruger et klik begivenhed, som var imod toggle() funktion, vi brugte eariler.det er, fordi toggle() er ikke en begivenhed, men en interaktion hjælper funktion., igennem: funktion (namespaces) (for (var jeg i namespaces) (hvis (namespaces [i] = = "treeevent") (jquery (dette). slip ('click, jquery. tilfælde. togglecollapse. treeevent. kontaktperson)}}}, vores igennem metode ligner vores fælde metode, men at vi i stedet vil frigøre klik begivenhed fra alle matchede elementer. treeevent: {- funktion (ref.) (hvis (event.target = = begivenhed. currenttarget) (var - elt = jquery (det), var cssclass = "kollapsede"; hvis (elt. hasclass (cssclass)) (elt. children(). slidedown(). end(). removeclass (cssclass)} andre (elt. children(). slideup(). end(). addclrøv (cssclass)} event.type = "togglecollapse" jquery. begivenhed. klare. anvendelse (dette argumenter)}}}}, her bruger vi den treeevent namespace abstrakte den kontaktperson.i den handling, vi greb mellem et sammenbrud og udvidet medlemsstat afhængigt af, hvis de matchede element indeholder css klasse "sammen".endelig har vi fastsat tilfælde - til vores navn i vores tilfælde, togglecollapse, og brug den apply() metode, der vil udføre den callback argument, når vi binde denne begivenhed. $("# træ li: forældre"). bind ("togglecollapse. treeevent" funktion (evt) {}), vi binder vores særlige omstændigheder til oversigter over vores register over.vores endelige resultat kan ses her.,, additonal ressourcer under et par ekstra ressourcer, kunne du finde nyttig, når man arbejder med skik begivenheder. tak for det!,, jquery begivenhed api, jquery begivenhed objekt, sædvane begivenheder i mootools, sædvane begivenheder i prototype, følger os på twitter, eller abonnere på nettuts + rss foder til den bedste web udvikling tutorials på nettet.

Step 1



Previous:
Next Page: