11488 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'utilise JQUERY dans un projet.

Je souhaite récupérer l'id de l'élément cliqué dans une liste à plusieurs niveaux. Lorsque je clique sur un élément à la racine de la liste, pas de problème, mais lorsqu'il s'agit d'un élément enfant, je récupère l'id de l'élément cliqué puis de l'élément parent et ainsi de suite. Je sais que cela est dû à l'effet de bouillonnement mais je ne sais pas comment le stopper. (il faut utiliser false mais où ?)

Mes recherches sur le forum n'ont rien donné et pourtant j'ai déjà vu ce problème.

Voici mon code HTML :

<ul class="document">
    <li id="dir1" class="dir">
        <ul>
            <li id="dir6" class="dir"></li>
        </ul>
    
    </li>
    <li id="dir3" class="dir">
        <ul>
            <li id="dir7" class="dir"></li>
        </ul>
    </li>
</ul>


Voici le code javascript :

$(function(){ 
    $(".dir").click( function () { recupIdDossierClique(this);});  
}); 

var idCssDossier;
function recupIdDossierClique(o)
{
    //on récupère la valeur de la propriété id
    idCssDossier = $(o).attr("id");
    alert(idCssDossier);
    
}


Merci
Modifié par sylvainbucule (11 Jan 2009 - 12:06)
J'ai fini par trouver une solution mais je ne sais pas si c'est la meilleure.

J'utilise la méthode bind prévue par JQUERY de la façon suivante :

$(function(){ 
    $(".dir").bind("click", function(event){
            event.stopPropagation();
            recupIdDossierClique(this);
                                            }); 
}); 

var idCssDossier;

function recupIdDossierClique(o)

{

    //on récupère la valeur de la propriété id

    idCssDossier = $(o).attr("id");

    alert(idCssDossier);
}


Cela fonctionne Smiley langue
Merci pour ce sujet, il est très intéressant et vient de m'aider.
Mais je ne parvient pas a utiliser cette variable récupérer pour cibler un div
j'aimerais faire un truc du genre :

$("#etape1 a").click(function(){

var block_a_afficher;

block_a_afficher= $(this).attr("id");
$("#nom_du_gros_block #block_a_afficher").addClass("visible");
$("#nom_du_gros_block #block_a_afficher").show();
return false;
});

quelq'un peut il m'aider?
sachant que le lien pour afficher un block possese le meme id que le block qu'il doit afficher.
Salut,

a écrit :
sachant que le lien pour afficher un block possese le meme id que le block qu'il doit afficher.

Impossible, un id doit être unique sur ton document. Tu dois régler ce problème avant toute chose.
dunjl