11523 sujets
JavaScript, DOM et API Web HTML5
Pourriez-vous m'aider une dernière fois ?
En fait, le code que vous m'avez fournit en premier temps (afin de changer l'état de la div .marqueur) fonctionne très bien avec la structure html que j'avais fournie (les div.marqueur se suivent)
En réalité, la vraie structure est :
Les HE_Marker qui n'ont pas de parent "marqueur" sont des emplacements invisibles. Il peut y en avoir 1 comme 10 entre deux div.marqueur
Du coup, j'ai fait une sorte de chose pas très jolie qui fonctionne :
J'ai essayé de modifier votre script de cette manière :
mais bien évidement, ça ne fonctionne pas
En fait, le code que vous m'avez fournit en premier temps (afin de changer l'état de la div .marqueur) fonctionne très bien avec la structure html que j'avais fournie (les div.marqueur se suivent)
En réalité, la vraie structure est :
<div id="marqueurs">
<div class="marqueur"><div class="HE_Marker">...</div></div>
<div class="marqueur"><div class="HE_Marker">...</div></div>
<div class="HE_Marker">...</div>
<div class="marqueur"><div class="HE_Marker">...</div></div>
<div class="marqueur"><div class="HE_Marker">...</div></div>
<div class="marqueur"><div class="HE_Marker">...</div></div>
<div class="HE_Marker">...</div>
<div class="HE_Marker">...</div>
<div class="marqueur"><div class="HE_Marker">...</div></div>
...
</div>
Les HE_Marker qui n'ont pas de parent "marqueur" sont des emplacements invisibles. Il peut y en avoir 1 comme 10 entre deux div.marqueur
Du coup, j'ai fait une sorte de chose pas très jolie qui fonctionne :
$('#marqueurs').on('click', '.marqueur .debloquer', function() {
$(this).parents('.marqueur').next('.marqueur').show(500)
})
$('#marqueurs').on('click', '.marqueur .debloquer', function() {
$(this).parents('.marqueur').next('.HE_Marker').next('.marqueur').show(500)
})
$('#marqueurs').on('click', '.marqueur .debloquer', function() {
$(this).parents('.marqueur').next('.HE_Marker').next('.HE_Marker').next('.marqueur').show(500)
})
$('#marqueurs').on('click', '.marqueur .debloquer', function() {
$(this).parents('.marqueur').next('.HE_Marker').next('.HE_Marker').next('.HE_Marker').next('.marqueur').show(500)
})
$('#marqueurs').on('click', '.marqueur .debloquer', function() {
$(this).parents('.marqueur').next('.HE_Marker').next('.HE_Marker').next('.HE_Marker').next('.HE_Marker').next('.marqueur').show(500)
})
$('#marqueurs').on('click', '.marqueur .debloquer', function() {
$(this).parents('.marqueur').next('.HE_Marker').next('.HE_Marker').next('.HE_Marker').next('.HE_Marker').next('.HE_Marker').next('.marqueur').show(500)
})
J'ai essayé de modifier votre script de cette manière :
$(document).ready(function () {
$('#marqueurs .marqueur').eq(0).show(0)
$('#marqueurs').on('click', '.marqueur .debloquer', function() {
if($(this).parents('.marqueur').next('.HE_Marker')) {
$(this).parents('.HE_Marker').next('.marqueur').show(500)
}
else {$(this).parents('.marqueur').next('.marqueur').show(500)
}
})
}
mais bien évidement, ça ne fonctionne pas
Oui,c'est bien post. up housse samsung galaxy tab 4 etui samsung galaxy tab 4
Modifié par kjlj163 (24 Dec 2014 - 10:16)
Modifié par kjlj163 (24 Dec 2014 - 10:16)
Bonjour.
Je ne suis pas sûr d'avoir tout compris.
Tes divs.HE_Marker, elles sont censées toujours être cachées ? Ou elles ont aussi un bouton à l'intérieur pour faire apparaître la div suivante ?
Si c'est le premier cas, tu peux essayer ceci :
Quand je te donne des bouts de code comme ça tout fait (et qui fonctionnent), essaie de toujours comprendre comment ça fonctionne, pourquoi ça fonctionne (avec la doc jQuery, ce ne devrait pas être compliqué)... et s'il y a une ligne que tu ne comprends pas, tu peux me demander une explication ?
Je vois que dans tes tentatives, tu as essayé de mettre plusieurs fois l'écouteur 'click' sur les mêmes divs :
Je ne suis pas sûr d'avoir tout compris.
Tes divs.HE_Marker, elles sont censées toujours être cachées ? Ou elles ont aussi un bouton à l'intérieur pour faire apparaître la div suivante ?
Si c'est le premier cas, tu peux essayer ceci :
$('#marqueurs').on('click', '.marqueur button', function() {
var $next = $(this).parents('.marqueur').next();
while( !$next.hasClass('marqueur') ) {
$next = $next.next();
}
$next.fadeIn(400)
})
Quand je te donne des bouts de code comme ça tout fait (et qui fonctionnent), essaie de toujours comprendre comment ça fonctionne, pourquoi ça fonctionne (avec la doc jQuery, ce ne devrait pas être compliqué)... et s'il y a une ligne que tu ne comprends pas, tu peux me demander une explication ?
Je vois que dans tes tentatives, tu as essayé de mettre plusieurs fois l'écouteur 'click' sur les mêmes divs :
// Par exemple ça...
$('#marqueurs').on('click', '.marqueur .debloquer', function() {
$(this).parents('.marqueur').next('.marqueur').show(500)
})
$('#marqueurs').on('click', '.marqueur .debloquer', function() {
$(this).parents('.marqueur').next('.HE_Marker').next('.marqueur').show(500)
})
$('#marqueurs').on('click', '.marqueur .debloquer', function() {
$(this).parents('.marqueur').next('.HE_Marker').next('.HE_Marker').next('.marqueur').show(500)
})
...
// Tu devrais plutôt le transformer en ça...
$('#marqueurs').on('click', '.marqueur .debloquer', function() {
$(this).parents('.marqueur').next('.marqueur').show(500)
$(this).parents('.marqueur').next('.HE_Marker').next('.marqueur').show(500)
$(this).parents('.marqueur').next('.HE_Marker').next('.HE_Marker').next('.marqueur').show(500)
...
})
Bonjour,
j'espère que vous avez passé un bon réveillon
Effectivement, il s'agissait bien du premier cas,
votre code :
correspond exactement à ce dont j'ai besoin.
Je comprends votre code, et je me rends compte que je n'aurais pas pensé à
Maintenant, ça me parait si logique...
je me suis mis sur un tuto d'openclassrooms, en fait le jquery est bien plus simple que je ne le pensais
Je vous remercie pour votre aide,
bon réveillon !
j'espère que vous avez passé un bon réveillon
Effectivement, il s'agissait bien du premier cas,
votre code :
$('#marqueurs').on('click', '.marqueur button', function() {
var $next = $(this).parents('.marqueur').next();
while( !$next.hasClass('marqueur') ) {
$next = $next.next();
}
$next.fadeIn(400)
})
correspond exactement à ce dont j'ai besoin.
Je comprends votre code, et je me rends compte que je n'aurais pas pensé à
while( !$next.hasClass('marqueur') ) {
Maintenant, ça me parait si logique...
je me suis mis sur un tuto d'openclassrooms, en fait le jquery est bien plus simple que je ne le pensais
Je vous remercie pour votre aide,
bon réveillon !