27. marts 2009 - 23:40Der er
12 kommentarer og 1 løsning
jQuery/ajax problemer
Hej,
Jeg er hoppet med på hypen: jQuery og ajax. Det ser lækkert ud, men jeg har alligevel to problemer (more to come probably!)
1. Undgå onClick og brug id i stedet Jeg har en side med thumbnails. Når man klikker på et af dem, skal jQuery+Ajax hente billedet i stort format. Dette gør jeg således: <img class="thumb" href="#" id="Img'.$nummer.'" onclick="hentImg(\''.$nummer.'\');" src="'.$thumbs.$navn.'" alt="'.$file.'">
Jeg har dog fået at vide, at jeg ikke bør bruge onClick, da det ikke er i tråd med "unobtrusive" javascript, samt at jeg bør skille behavior fra struktur. Hvordan opnår jeg det samme med id? Håber I har en idé - på forhånd tak!
2. Samtidig med at den loader billedet, loader den også kommenter-siden med Querys load(). Dvs. tilhørende kommentarer samt en form, som bruges til at poste nye kommentarer. Når man submitter formen (fra kommentar siden), fungerer kaldet til jQuery dog ikke. Jeg går ud fra, at det er fordi at kommentarsiden er en "underside". Den er jo selv blevet kaldt af jQuery.load. Selvom jeg indsætter følgende på selve kommentarsiden, virker det ikke: <script type="text/javascript" src="js/jQuery.1.2.1.js"></script>
Håber det giver mening - skriv hvis I vil have det uddybet.
Ps. Jeg har ikke umiddelbar adgang til nettet, men vil vende tilbage igen i morgen! :)
Når man har valgt et library, der bygger på gammel, invalid og uhensigtsmæssig JavaScript, behøver man nok ikke bekymre sig så meget om "unobtrusive" JavaScript =)
På spørgsmålet, om jeg så kender andre libraries, som er bedre, er svaret, nej. Jeg kender mange såkaldte Ajax libraries, men ikke nogen i 'åben sovs', som er gode.
Haha. Altid principfast mht. w3c... Men fair nok. Jeg agter dog at fortsætte med at bruge jQuery, da der, som du selv siger, ikke eksisterer andre open source alternativer.
Ved du evt. hvordan man kan få et jQuery script til at virke på en side som man inkluderer med Ajax?
F.eks.: main.php $.('#content').load('sub.php');
Jeg ønsker at lave noget jquery på sub.php, men det går i udu, når jeg tilgår det som ovenfor.
Ja, det er åbenbart et meget normalt (og omtalt) problem. Problemet ligger i, at javascript ikke umiddelbart fungerer på indhold, der er genereret efter siden oprindeligt er indlæst.
Eller sagt på en anden måde: "In CSS, style rules are automatically applied to any element that matches the selectors, no matter when those elements are added to the document (DOM).
In JavaScript, event handlers that are registered for elements in the document apply only to those elements that are part of the DOM at the time the event is attached. If we add similar elements to the DOM at a later time, whether through simple DOM manipulation or ajax, CSS will give those elements the same appearance, but JavaScript will not automatically make them act the same way." http://www.learningjquery.com/2008/03/working-with-events-part-1
Det er en fin og simpel løsning - men måske lidt for simpel. Generelt bør du separere behaviour fra markup. Altså ingen inline javascript, ligesom du heller ikke bør bruge inline CSS (med mindre du specifik henvender dig til IE3.1).
Nej, jeg ville self lægge mit jquery i et .js fil og mit stylesheet i en .css fil, nu var det mere info til folk som muligvis løb ind i samme problem, formoder at folk som sidder og roder med jquery ved en del eller hvertfal bare så meget at de godt er klar over at det er smartest at have sine ting delt op.
Der er ikke som sådan noget i vejen med at bruge inline CSS og/eller JavaScript. Det kunne være dybt problematisk under XHTML, men da det er droppet, er der ikke længere dén begrundelse.
Ja, det kan i mange tilfælde være mere bøvlet at vedligeholde, men generelt er der ikke i dagens paradigme noget i vejen for at bruge inline CSS og/eller JavaScript =)
Som du selv siger, bliver vedligeholdelse besværliggjort, hvis man blander javascript og html. Derudover har nogle brugere deaktiveret javascript, og man bør i dette henseende have alternative løsninger. Som jeg sagde tidligere: det er en fin og simpel løsning. Men det kan jo gøres bedre, og hvis det ikke bør påpeges her på eksperten, hvor så?
"Ja, det kan i mange tilfælde være mere bøvlet at vedligeholde, men generelt er der ikke i dagens paradigme noget i vejen for at bruge inline CSS og/eller JavaScript" ... bemærk fremhævelserne ;o)
Hvad angår klienter uden JS-understøttelse, så er det uendelig få brugere af alm. browsere, der har slået JS fra, hvad man dog ikke opdager, hvis man ikke filtrerer sin statistik effektivt.
Indhold, som er søgemaskinerelevant, bør altid være til stede i sidens HTML-kode - men til masser af andet indhold kan JS være yderst anvendeligt. Dog er det helt korrekt, at handicaprelaterede klienter får alternative muligfheder for at hente informationerne
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.