Bonjour à tous,
J'ai réalisé une présentation portant sur la précision de la géolocalisation => les limites du GPS. Cependant, je souhaite ajouter une petite fonctionnalité en plus : dès que l'on descend un petit peu, mon jquery détecte ceci et me fait descendre à la diapo suivante. Cependant, après ajout de cette fonctionnalité, lorsque je clique ici contrairement à ici sans cette fonctionnalité. En effet, j'ai deux événements qui se confrontent.
J'utilise le plugin JQuery HISTORY pour détecter les changements de hash. Voici mon bout de code en question.
// Ce bout de code détecte le change de hash et fait scroller la page jusqu'à arriver à la diapo !
$.History.bind(function(state){
action=state.split('/');
if( action[1] != ''){
var reg = /^[0-9]{1,2}$/;
var test = reg.test(action[1]);
if(test == true){
$("html,body").animate({ scrollTop: height_scroll * (action[1] - 1)});
}
}
)};
Et le dernier bout de code qui gâche tout !
$(window).scroll(function () {
if ($(this).scrollTop() > height_scroll *0.6 && $(this).scrollTop() < height_scroll *1) {
window.location.hash = "/2";
}
if ($(this).scrollTop() > height_scroll *1.6 && $(this).scrollTop() < height_scroll *2) {
window.location.hash = "/3";
}
if ($(this).scrollTop() > height_scroll *2.6 && $(this).scrollTop() < height_scroll *3) {
window.location.hash = "/4";
}
if ($(this).scrollTop() > height_scroll *3.6 && $(this).scrollTop() < height_scroll *4) {
window.location.hash = "/5";
}
if ($(this).scrollTop() > height_scroll *4.6 && $(this).scrollTop() < height_scroll *5) {
window.location.hash = "/6";
}
if ($(this).scrollTop() > height_scroll *5.6 && $(this).scrollTop() < height_scroll *6) {
window.location.hash = "/7";
}
if ($(this).scrollTop() > height_scroll *6.6 && $(this).scrollTop() < height_scroll *7) {
window.location.hash = "/8";
}
if ($(this).scrollTop() > height_scroll *7.6 && $(this).scrollTop() < height_scroll *8) {
window.location.hash = "/9";
}
if ($(this).scrollTop() > height_scroll *8.6 && $(this).scrollTop() < height_scroll *9) {
window.location.hash = "/10";
}
if ($(this).scrollTop() > height_scroll *9.6 && $(this).scrollTop() < height_scroll *10) {
window.location.hash = "/11";
}
if ($(this).scrollTop() > height_scroll *10.6 && $(this).scrollTop() < height_scroll *11) {
window.location.hash = "/12";
}
if ($(this).scrollTop() > height_scroll *11.6 && $(this).scrollTop() < height_scroll *12) {
window.location.hash = "/13";
}
});
En espérant que vous allez trouvez une solution pour mon problème.
Léo
Salut,
Sans tout comprendre de ton code :P je te dirais bien de tenter la fonction stopPropagation pour, comme son nom l'indique, stopper la propagation d'un évènement d'un élément parent à son enfant.
$(window).scroll(function(evt) {
evt.stopPropagation();
});
En même temps la (bonne) gestion des évènements (surtout quand il y en a beaucoup :)) avec jQuery est une des choses les plus compliquées.
En espérant que cela t'aide ;)
Shadow
Merci beaucoup Shadow, je ne connaisssais pas du tout cette fonction ... je vais l'essayer !