11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
J'ai actuellement un programme (voir code ci-dessous) qui me permet d'afficher le contenu d'une requête sur un fichier xml; à savoir : Retrouver l'élément qui est le parent direct d'un élément enfant... Ca, ça marche très bien ! Ceci dit, ce que j'aimerais, c'est retrouver aussi les frères de ce parent, pour les afficher aussi -> Là, j'avoue que je coince plus qu'un peu !
Est-ce que quelqu'un aurait une proposition, SVP ?
En vous remerciant par avance ! Smiley smile

Code du fichier XML.xml :
<?xml version="1.0" encoding="UTF-8"?>
<enregistrements>

    <r>Trucs et astuces
        <r>Frère du parent</r>
        <r>Parent1
            <r titre="Enfant">
                <r>Petit-fils 1</r>
                <r>Petit-fils 2</r>
                <r>Petit-fils 3</r>
            </r>
        </r>
        <r>Frère du parent 2</r>
        <r>Frère du parent 3</r>
    </r>

</enregistrements>


Code du fichier Html :
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>

<script type="text/javascript">
$(function(){
    $.get("XML.xml", function(xml){
    
            var appendHtml = "";
            $(xml).find("r[titre='Enfant']").parent("r").each(function(i, item){
                var parents = $.trim(item.childNodes[0].textContent);
                appendHtml += '<span>'+parents+'<br /></span>';
            }); 
            $("#Accueil").append(appendHtml);

    }, "xml");
});
</script>

</head>
<body>

<div id="Accueil"></div>
 
 </body>
</html>

Modifié par Tobie (11 Sep 2010 - 16:51)
Salut !
Essai ça :

function(xml) {
	var appendHtml = "";
	$('> *', $("r[titre='Enfant']", xml).parents()[1]).each(function () {
		appendHtml += '<span>'+this.childNodes[0].textContent+'<br /></span>'; 
	});
	$("#Accueil").append(appendHtml);
}


En gros tu sélectionne le second parent et tu liste ses enfants. Ça te donne la liste des frères du premier parent.
C'est ce que tu cherchais ?
Administrateur
Bonjour,

Tu devrais jeter un coup d'oeil aux fonctions de parcours de jQuery dans la doc jQuery : http://api.jquery.com/prev/

Ce que tu cherches c'est .siblings() je pense.

Frère(s) suivant(s) : next() et nextAll() (nextUntil() pour des besoins particuliers)
Frère(s) précédent(s) : prev() et prevAll() (prevUntil() pour des besoins particuliers)

Enfants et descendants : children() et find('selecteur')

Parents et ascendants : parent() et closest('selecteur') (et parents() )

.andSelf() ... le nom parle de lui-même
Ce que je cherche, c'est à différencier le parent même des frères de ce parent (pour mettre le parent en fluo, tout en affichant également ses frères, non "fluorisés")... Du coup, "siblings()" est ce qui correspond le mieux à ma recherche du moment...
Merci Felipe, pour les précisions apportées; ça peut servir !
et Grand Merci à vous 2 pour la rapidité et... la pertinence de vos réponses, ça fait du bien !

Bonne continuation à vous ! Smiley biggrin
Modifié par Tobie (10 Sep 2010 - 00:50)