He Tweakers,
Momenteel loop ik tegen een erg raar probleem aan met het gebruik van jQuery op mijn iPhone. Ik zal eerst het probleem even uitleggen. Ik heb een map van Nederland, met daarin een aantal div elementen welke voor een stad staan. Deze bevatten een span (het rondje) en een tooltip (nog een div):

De div met het data-city attribuut wordt herhaald voor iedere stad.
Met CSS wordt de styling toegevoegd en de position bepaald. De map heeft positie relative en de div's absolute.
Door middel van jQuery komt er een click event op iedere data-city div. Zoals je onderstaand kunt zien wordt na een klikt op het element ook een hidden input gevuld. Dit is omdat deze waarde in de database wordt opgeslagen.
Nadat er op een div geklikt is wordt de class active toegevoegd. Deze zorgt ervoor de div display: block; in plaats van display: none; krijgt. Dit ziet er dan als volgt uit:

Nu het echte probleem:
Want bovenstaand werkt perfect op zowel mijn Macbook als een Windows laptop. Echter op mijn iPhone werkt het click event niet zoals gewenst.
Zodra er op een div geklikt is, wordt de active class toegevoegd en de hidden input wordt ook gevuld. Echter blijft de div donker groen (in plaats van licht groen) en ook de tooltip wordt niet getoond.
Om een of andere reden gebeurd dit pas als er ergens anders in de map een tweede keer geklikt wordt (dus niet op één andere of de al eerder geselecteerde div).
Ik heb meerdere dingen geprobeerd zoals het verwijderen van alle CSS transities, het hover event (welke gelijk staat aan de active state) verwijderd op mobiel, andere events (mousedown en tap) geprobeerd, met een timeout een click event op de map getriggerd.. Echter mocht dit helaas allemaal niet helpen.
Hopelijk is hier iemand enigszins bekend met dit probleem, want ik heb geen idee meer wat ik er aan zou kunnen doen. Alle hulp is welkom, bij voorbaat dank!
Momenteel loop ik tegen een erg raar probleem aan met het gebruik van jQuery op mijn iPhone. Ik zal eerst het probleem even uitleggen. Ik heb een map van Nederland, met daarin een aantal div elementen welke voor een stad staan. Deze bevatten een span (het rondje) en een tooltip (nog een div):

HTML:
1
2
3
4
5
6
7
8
9
| <figure class="map"> <div data-city="amsterdam"> <div class="tooltip"> Amsterdam <span class="arrow"></span> </div> <span></span> </div> </figure> |
De div met het data-city attribuut wordt herhaald voor iedere stad.
Met CSS wordt de styling toegevoegd en de position bepaald. De map heeft positie relative en de div's absolute.
Door middel van jQuery komt er een click event op iedere data-city div. Zoals je onderstaand kunt zien wordt na een klikt op het element ook een hidden input gevuld. Dit is omdat deze waarde in de database wordt opgeslagen.
JavaScript:
1
2
3
4
5
6
7
| var city = $('div[data-city]'); city.on('click', function() { $('input[name="city"]').val( $(this).data('city') ); city.removeClass('active'); $(this).addClass('active'); }); |
Nadat er op een div geklikt is wordt de class active toegevoegd. Deze zorgt ervoor de div display: block; in plaats van display: none; krijgt. Dit ziet er dan als volgt uit:

Nu het echte probleem:
Want bovenstaand werkt perfect op zowel mijn Macbook als een Windows laptop. Echter op mijn iPhone werkt het click event niet zoals gewenst.
Zodra er op een div geklikt is, wordt de active class toegevoegd en de hidden input wordt ook gevuld. Echter blijft de div donker groen (in plaats van licht groen) en ook de tooltip wordt niet getoond.
Om een of andere reden gebeurd dit pas als er ergens anders in de map een tweede keer geklikt wordt (dus niet op één andere of de al eerder geselecteerde div).
Ik heb meerdere dingen geprobeerd zoals het verwijderen van alle CSS transities, het hover event (welke gelijk staat aan de active state) verwijderd op mobiel, andere events (mousedown en tap) geprobeerd, met een timeout een click event op de map getriggerd.. Echter mocht dit helaas allemaal niet helpen.
Hopelijk is hier iemand enigszins bekend met dit probleem, want ik heb geen idee meer wat ik er aan zou kunnen doen. Alle hulp is welkom, bij voorbaat dank!