Hallo allemaal,
ik heb een merkwaardig jQuery (is een javascript library
) probleem.
ik ben bezig met een soort gallery script dat fototjes op een pagina neerzet en wat thumbnails eronder.
Wanneer een thumbnailtje wordt geklikt, verdwijnt de 'grote foto' en wordt de thumbnail zichtbaar.
Er kan echter een oneindig aantal fotos worden weergegeven, en daarom kunnen niet alle thumbnailtjes onder de grote foto komen. Ik probeer daarom een carrousel te maken, te bedienen met een knopje.
Als er op het knopje wordt geklikt, 'schuift dan de volgende foto binnen.'
Op zich werkt het doorschuiven prima, de 'nieuwe' foto komt er keurig bij. Enige is: ik kan er niet op klikken... Nou ja, wel op klikken, maar de functie wordt niet uitgevoerd. En dat terwijl hij toch de juiste class en alles heeft.
Het lijkt erop dat de functie $("#thumbnails > li > .thumbnail").click() niet wordt getriggerd als ik een nieuw element aan de DOM toevoeg. Ik zit er al een paar uur op te puzzelen
(OA append("<li><img class="thumbnail nummer"+aandebeurt+" /> ed al geprobeert - zelfde resultaat: geen
)
Iemand enig idee waar mijn denkfoutje zit?
pseudo html
Je kunt deze pagina hier bekijken. (Als de foto niet past moet je ff refreshen, daar wordt nog aan gewerkt
)
De functies die de hele zooi aansturen:
ik heb een merkwaardig jQuery (is een javascript library
ik ben bezig met een soort gallery script dat fototjes op een pagina neerzet en wat thumbnails eronder.
Wanneer een thumbnailtje wordt geklikt, verdwijnt de 'grote foto' en wordt de thumbnail zichtbaar.
Er kan echter een oneindig aantal fotos worden weergegeven, en daarom kunnen niet alle thumbnailtjes onder de grote foto komen. Ik probeer daarom een carrousel te maken, te bedienen met een knopje.
Als er op het knopje wordt geklikt, 'schuift dan de volgende foto binnen.'
Op zich werkt het doorschuiven prima, de 'nieuwe' foto komt er keurig bij. Enige is: ik kan er niet op klikken... Nou ja, wel op klikken, maar de functie wordt niet uitgevoerd. En dat terwijl hij toch de juiste class en alles heeft.
Het lijkt erop dat de functie $("#thumbnails > li > .thumbnail").click() niet wordt getriggerd als ik een nieuw element aan de DOM toevoeg. Ik zit er al een paar uur op te puzzelen
(OA append("<li><img class="thumbnail nummer"+aandebeurt+" /> ed al geprobeert - zelfde resultaat: geen
Iemand enig idee waar mijn denkfoutje zit?
pseudo html
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
| <div id="PictureBox"> <img zichtbaar> <img onzichtbaar> <img onzichtbaar> <img onzichtbaar> <ul id="thumbnails"> <li>controle knop</li> <li>thumb1 (aan de beurt om uit te faden)</li> <li>thumb2</li> <li>thumb3</li> </ul> |
Je kunt deze pagina hier bekijken. (Als de foto niet past moet je ff refreshen, daar wordt nog aan gewerkt
De functies die de hele zooi aansturen:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
| //als er een thumbnail wordt geklikt, moet ie zichtbaar worden in de Box $("#thumbnails > li > .thumbnail").click(function(){ alert("klik"); //dit is de link var source = $(this).attr("src"); //dit is de oude link var link = $("#PictureBox > a > img:first").attr("src"); var pictWidth = $(this).width(); var pictHeight = $(this).height(); var boxWidth = $("#PictureBox").width(); var boxHeight = $("#PictureBox").height(); //de hele zut bepalen if(pictHeight > pictWidth) { var WeNeed = boxHeight - 34; } $("#PictureBox > a > img:first").slideUp(600); //de animatie even de tijd geven setTimeout(function(){ if(pictHeight > pictWidth) { $("#PictureBox > a > img:first").removeAttr("width"); $("#PictureBox > a > img:first").attr("height",WeNeed); } $("#PictureBox > a > img:first").attr("src",source); $("#PictureBox > a > img:first").slideDown(600); }, 600); }); //knopje links voor het doorschuiven $("#PictureBox .left").click(function(){ //de thumbnails doorschuiven var aantalPictures = $("#PictureBox > a > img").length; $("#thumbnails > li > img:first").fadeOut(600); //animatie even de tijd geven setTimeout(function(){ //de li helemaal uit de DOM halen $($("#thumbnails > li:nth-child(2)")).remove(); //nu de nieuwe li maken met de source die 'aan de beurt' is :) var nextSlide = parseInt( $("#thumbnails > li > img:first").attr("class").replace("thumbnail nummer_","") ); //alert(nextSlide); if( (nextSlide+2) >= aantalPictures) { //welke thumb moet erbij? //alert(nextSlide); if( (nextSlide+2) == aantalPictures) var aandebeurt=0; //harde reset if( (nextSlide+1) == aantalPictures) var aandebeurt=1; //harde reset } else var aandebeurt = nextSlide + 2; //alert(aandebeurt); var source = $("#PictureBox > a > img.nummer_"+aandebeurt).attr("src"); //alert(source); //var li = "\t\t<li><img class=\"thumbnail nummer_"+aandebeurt+"\" src=\""+source+"\" alt=\"afbeelding\" /></li>\n"; //alert(li); //de nieuwe li er in zetten $(li).insertAfter( $("#thumbnails > li:nth-child(3)") ); //grootte van het plaatje aanpassen var pictWidth = $("#PictureBox > a > img.nummer_"+aandebeurt).width(); var pictHeight = $("#PictureBox > a > img.nummer_"+aandebeurt).height(); if(pictWidth >= pictHeight) { var afmeting ="width"; var waarde = 35; } else { var afmeting ="height"; var waarde = 24; } //alert(pictWidth+" & "+pictHeight+" -> "+afmeting+"="+waarde); obj = $("#thumbnails").createAppend ( 'img', { 'src': source, 'alt': 'afbeelding' } ); //de nieuwe thumb infaden $("#thumbnails > li > img.nummer_"+aandebeurt).fadeIn(600); obj.attr("class","thumbnail nummer_"+aandebeurt).attr(afmeting,waarde); //alert(obj.attr(afmeting)); obj = $(obj).wrap('<li></li>'); obj.fadeIn(600); },600); }); |