Avatar billede Slettet bruger
04. juli 2012 - 18:26 Der er 7 kommentarer og
1 løsning

lazy load jquery

Hej.

Er ved prøve lidt jQuery for første gang, og det er med et plugin der loader billeder når man scroll'er nedad på siden.

Er gået i stå da der ikke helt er forklaret hvor alle stykker kode skal pastes ind. Følgende klaret:


1. Har importeret "jquery.js" og det relevante plugin "jquery.lazyload.js", lokalt.
( Link til seneste version: http://www.appelsiini.net/2012/lazyload-170 )

2. I bunden af html dokumentet (inden </body>) har jeg tilføjet:

<script src="jquery.js" type="text/javascript"></script>
<script src="jquery.lazyload.js" type="text/javascript"></script>
<script type="text/javascript">
      $("img.lazy").lazyload({
  data_attribute  : "kitten"
});
  </script>

3. Billedet:

<img class="lazy" src="images/lazyPix.gif" data-kitten="images/xxx.gif">

4. CSS:

.lazy {
    display: none;
}


Skal jeg gøre andet. Skal der flere informationer ind i headeren, eller andet? Siden er nemlig tom for billeder. Håber det giver mening eller sig til :)

Tak på forhånd!
Avatar billede amews_aj Nybegynder
04. juli 2012 - 19:01 #1
Flyt
<script src="jquery.js" type="text/javascript"></script>
<script src="jquery.lazyload.js" type="text/javascript"></script>
op imellem <head> og </head>

Ret data-kitten til data-original

Og din JS skal være:
$(window).load(function () { $("img.lazy").show().lazyload() });
Avatar billede amews_aj Nybegynder
04. juli 2012 - 19:02 #2
Hov, du har ret mht. data-kitten så længe du sætter data_attribute  : "kitten"
Avatar billede Slettet bruger
04. juli 2012 - 19:15 #3
Du er sej! Tak. Det har jeg så brugt to dage på. Gi et svar, så får du lige point :)

Bonus spørgsmål: kan jeg bruge det på en id istedet for img tag? Eks.v. id="colContainer".

Så både tekst og billede loader.
Avatar billede amews_aj Nybegynder
04. juli 2012 - 19:23 #4
Det var så lidt :)

Er ikke helt sikker på hvad du mener med det sidste spørgsmål. Hvis du mener lazy loade <div id="colContainer">Noget tekst her</div>, så giver det ikke så meget mening eftersom teksten bliver hentet af browseren med det samme. Det virker på billeder fordi de hentes separat af browseren.

Generelt kan man dog hente elementer via id i jQuery således: $("#id")
Avatar billede amews_aj Nybegynder
04. juli 2012 - 19:24 #5
Tror det primære problem i dit oprindelige eksempel var manglen på .show(), eftersom du havde skjult alle img's via CSS.
Derudover kan det være koden bliver kørt før alle elementer er klar, hvilket $(window).load() sikrer.
Avatar billede Slettet bruger
04. juli 2012 - 19:38 #6
OK, mente
<div id="colContainer">Noget tekst her<img src=""></div>
<div id="colContainer">Noget tekst her<img src=""></div> etc.

-Altså både tekst/billede. Men hvis det ikke gir mening - tænkte bare at det ville se pænere ud.

Mht .show; aha ja, det stod ikke i tut'en: http://www.appelsiini.net/2012/lazyload-170

Han skriver bare, at de skal gemme's via CSS... Og så loades. Måske tager han udgangspunkt i at man allerede ved det du skriver :)

Tak igen!
Avatar billede amews_aj Nybegynder
04. juli 2012 - 19:43 #7
Du har ret, det ville se pænere ud, og det kan bestemt lade sig gøre.

Både det, og ".show()" står der om på selve projekt siden: http://www.appelsiini.net/projects/lazyload :)

Du kan altså bruge
$("img.lazy").lazyload({       
    container: $("#container")
});
Avatar billede Slettet bruger
04. juli 2012 - 19:51 #8
Ahh. Ikk nemt når man ikk kender det :) Er Russisk for mig. Tak for hjælpen!
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
Kurser inden for grundlæggende programmering

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