Avatar billede phpbegynder2004 Nybegynder
27. marts 2009 - 23:40 Der 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.'">

Funktionen er:
function hentImg(img){               
    $('#Img'+prevtaeller).removeClass('thumbSelected');
    $('#Img'+prevtaeller).addClass('thumb');
    $('#Img'+taeller).addClass('thumbSelected');       
    $('#mainImg').load('imageviewer/hentImg.php?taeller='+img);    //Load BILLEDE
    $('#komm').load('imageviewer/hentKommentar.php?taeller='+img);//Load KOMMENTARER
    prevtaeller = taeller;
    return false;
}   

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! :)
Avatar billede olebole Juniormester
30. marts 2009 - 02:10 #1
<ole>

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.

/mvh
</bole>
Avatar billede phpbegynder2004 Nybegynder
30. marts 2009 - 21:37 #2
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.

På forhånd tak for hjælpen!
Avatar billede phpbegynder2004 Nybegynder
05. april 2009 - 20:10 #3
Tak for hjælpen, men jeg vil forsøge at oprette et nyt spørgsmål, hvor jeg mere specifikt beskriver spørgsmål nr. 2
Avatar billede phpbegynder2004 Nybegynder
24. juli 2009 - 19:50 #4
Lukket!
Avatar billede net-base.dk Nybegynder
04. september 2009 - 13:11 #5
fandt du ud af hvordan man gjore? sidder nemlig selv med samme problem.
Avatar billede phpbegynder2004 Nybegynder
04. september 2009 - 14:43 #6
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

Der er forskellige metoder til at komme omkring dette på. Du kan læse om det her:¨
http://docs.jquery.com/Frequently_Asked_Questions#Why_do_my_events_stop_working_after_an_AJAX_request.3F
Avatar billede net-base.dk Nybegynder
04. september 2009 - 19:06 #7
Yeps det fandt jeg også ud af, fandt dog en måde at klare jobbet på.

man kan simpelt og let gøre flg.

<script type="text/javascript">
function MinFunktion(id) {
    $("#divcontainer").load(id);
}
</script>

og i sit html skriver man så.

<a href="java script:MinFunktion("noget.htm");">klik</a>

Så skulle der være andre med samme problem, hvilket der formentlig er så har de en løsning på problemet her :D

Go' Weekend
Avatar billede phpbegynder2004 Nybegynder
05. september 2009 - 00:18 #8
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).
Avatar billede net-base.dk Nybegynder
05. september 2009 - 00:35 #9
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.
Avatar billede phpbegynder2004 Nybegynder
05. september 2009 - 01:10 #10
Det var nu denne linje jeg mente :)
<a href="java script:MinFunktion("noget.htm");">klik</a>
Avatar billede olebole Juniormester
05. september 2009 - 15:58 #11
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  =)
Avatar billede phpbegynder2004 Nybegynder
05. september 2009 - 17:30 #12
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å?
Avatar billede olebole Juniormester
05. september 2009 - 19:14 #13
Nej, det var noget andet, jeg skrev:

"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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester