2010-01-26 8 views
3

J'ai essayé d'implémenter la fonction enfants dans ExtJS en utilisant select ("~ *"), ça ne fonctionnait pas bien. Je veux juste que ExtJS me renvoie un ensemble de nœud enfant immédiat et ignore tous les nœuds sous les nœuds enfants.ExtJS équivalent des enfants de JQuery?

<div> 
    <span> 
     <img/> 
     <img/> 
    </span> 
    <span> 
     <img/> 
     <img/> 
    </span> 
    <span> 
     <img/> 
     <img/> 
    </span> 
</div> 

En fait, je veux juste le nombre d'enfants immédiats. Si je reçois le droit de sélection, je peux faire un getCount() sur le CompositeElement.

Toute aide sera grandement appréciée.

Cheers, Mickey

Répondre

6

Si vous pouvez id parent, alors vous pourriez faire quelque chose comme ça pour amener les enfants:

<div id='mydiv'> 
    <span> 
     <img/> 
     <img/> 
    </span> 
    <span> 
     <img/> 
     <img/> 
    </span> 
    <span> 
     <img/> 
     <img/> 
    </span> 
</div> 

Définissez une fonction comme celle-ci:

function getChildren(parentId) { 
     var kids = Ext.get(parentId).select('*'); 
     kids = kids.filter(function(el) { 
      return el.parent().id == parentId 
     }); 
     return kids; 
    }  

Dans votre exemple, getChildren('mydiv').getCount() retournera 3.

+0

hey, vous êtes génial :) Je sais que c'est peut-être un peu trop demander mais j'espère que vous pouvez y répondre. Je n'arrive toujours pas à comprendre comment nous pouvons sélectionner un élément de classe dans ExtJS comme Jquery peut facilement aller avec $ (". Myclass"). Ext.get() est seulement pour l'id. Merci encore :) –

+0

Essayez 'Ext.query ('. MyClass') [0];' pour sélectionner votre élément DOM par classe –

+0

Excellent! Merci pour l'indice. – igor

0

Peut-être que vous pourriez fournir une représentation des éléments DOM désirés qui seraient sélectionnés, mais, si je comprends bien votre question, je pense que vous voulez utiliser Ext.Element. De Ext.CompositeElement, vous avez accès à toutes les méthodes de Ext.Element. En utilisant Ext.Element.select, Ext.Element.parent, Ext.Element.query, Ext.Element.next, et ainsi de suite, vous devriez avoir accès à tout élément que vous voulez.

Voir: http://www.extjs.com/deploy/dev/docs/source/Element.fx.html#cls-Ext.Element

Servus,

-bn

1

J'ai essayé la mise en œuvre de la fonction des enfants à l'aide ExtJS select ("~ *"), juste na pas bien.

Je crois que ce que vous cherchez est "> *". En ExtJs vous pouvez faire:

var children = Ext.get("myDiv").query("> *"); 

avec

<div id='mydiv'> 
    <span> 
     <img/> 
     <img/> 
    </span> 
    <span> 
     <img/> 
     <img/> 
    </span> 
    <span> 
     <img/> 
     <img/> 
    </span> 
</div> 

Les enfants variables seront désormais un tableau de HTMLElements descendants directs (dans ce cas 3 travées).

0

Si vous voulez juste pour obtenir le nombre d'enfants, vous pouvez simplement utiliser

Ext.select('div span').getCount(); 

Il retourne 3 dans votre exemple.