Raar probleem.
Ik heb een soort van Lightbox gemaakt, waarmee ik een reeks afbeeldingen kan laten zien.
Als ik m'n imageviewer voor de eerste keer open is er niks aan de hand. Ik kan gewoon het volgende of vorige plaatje kiezen, het "click"-event wordt dan maar één keer gefired.
Als ik de imageviewer laat sluiten met HideImageViewer() en vervolgens weer open gebeurt er ineens iets raars. Als ik op "volgende" of "vorige" druk wordt het "click"-event twee keer gefired!
Je zou zeggen dat er iets mis gaat bij HideImageViewer(), maar het is mij een raadsel. Ik heb al veel dingen getest om steeds maar uit te sluiten, ik heb gedebugged, op de vreemdste plaatsen een alert() gezet, maar ik ben de draad nu echt kwijt.
Dit zijn de functies:
Allemaal heel basic zoals je ziet.
Hier de relevante HTML code:
Het kan vast allemaal veel mooier/correct (alt attributes bijvoorbeeld) maar dat lijkt me niet de oorzaak van mijn probleem.
Het event wordt dus echt twee keer gefired.
Zie ik iets enorm over het hoofd, wie kan me vertellen wat hier mis gaat?
Ik heb een soort van Lightbox gemaakt, waarmee ik een reeks afbeeldingen kan laten zien.
Als ik m'n imageviewer voor de eerste keer open is er niks aan de hand. Ik kan gewoon het volgende of vorige plaatje kiezen, het "click"-event wordt dan maar één keer gefired.
Als ik de imageviewer laat sluiten met HideImageViewer() en vervolgens weer open gebeurt er ineens iets raars. Als ik op "volgende" of "vorige" druk wordt het "click"-event twee keer gefired!
Je zou zeggen dat er iets mis gaat bij HideImageViewer(), maar het is mij een raadsel. Ik heb al veel dingen getest om steeds maar uit te sluiten, ik heb gedebugged, op de vreemdste plaatsen een alert() gezet, maar ik ben de draad nu echt kwijt.
Dit zijn de functies:
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
| function HideImageViewer() { $(document).ready(function() { $("#imageviewer .image img").attr("src", null); $("#imageviewer .title img").attr("src", null); $("#imageviewer").css("display", "none"); }); } function ShowImageSequence(sequence) { $(document).ready(function(){ /* Lees het XML bestand in */ $.get("/" + sequence + ".xml", function(xml){ /* Loop door het XML bestand heen. */ $i = 1; var images = new Array(); $(xml).find("image").each(function(){ images[$i] = Array($(this).find("URL").text(), $(this).find("title").text()); $i++; }); $("#imageviewer").css("display", "block"); $("#imageviewer .navigation").css("display", "block"); /* Zorg dat bij het laden de eerste afbeelding getoond wordt. */ $currentImage = 1; $imageCount = $(xml).find("image").length; $("#imageviewer .image img").attr("src", images[$currentImage][0]); $("#imageviewer .title img").attr("src", "textimage.html?text=" + images[$currentImage][1]); $("#imageviewer .previous").click(function() { /* Er drukt iemand op "vorige". */ if(($currentImage - 1) > 0) { $currentImage--; } $("#imageviewer .image img").attr("src", images[$currentImage][0]); $("#imageviewer .title img").attr("src", "textimage.html?text=" + images[$currentImage][1]); }); $("#imageviewer .next").click(function() { /* Er drukt iemand op "volgende". */ if(($currentImage + 1) <= $imageCount) { $currentImage++; } $("#imageviewer .image img").attr("src", images[$currentImage][0]); $("#imageviewer .title img").attr("src", "textimage.html?text=" + images[$currentImage][1]); }); }); }); } |
Allemaal heel basic zoals je ziet.
Hier de relevante HTML code:
HTML:
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
| <div id="imageviewer"> <img src="images/imageviewer_border.png" class="border" /> <div class="image"> <img src="images/blank.png" /> </div> <div class="title"> <img src="images/blank.png" /> </div> <div class="overlay"> </div> <div class="navigation"> <div class="close"> <img src="/images/close.png" onClick="HideImageViewer();" /> </div> <div class="previous"> <img src="/images/previous.png" /> </div> <div class="next"> <img src="/images/next.png" /> </div> </div> </div> |
Het kan vast allemaal veel mooier/correct (alt attributes bijvoorbeeld) maar dat lijkt me niet de oorzaak van mijn probleem.
Het event wordt dus echt twee keer gefired.
Zie ik iets enorm over het hoofd, wie kan me vertellen wat hier mis gaat?