2009-11-06 6 views
0

J'ai une vue arborescente simple qui charge les nœuds enfants via un appel ajah au serveur. Je vais abréger le html mais vous devriez avoir l'essentiel.Possibilité de sélectionner le texte (interne) du contenu chargé via un appel asynchrone (ajax)?

<li id=1>Node 1</li> 

Lorsque cela est étendu (en étant cliqué sur le bouton), il y aura un tas de noeuds sous chargés par un appel Ajah (ils ne sont pas sur la page pour commencer):

<ul> 
    <li id=1_1>Node 1_1</li> 
    <li id=1_2>Node 1_2</li> 
    <li id=1_3>Node 1_3</li> 
</ul> 

puis à nouveau pour le nœud 1_1

<ul> 
    <li id=1_1_1>Node 1_1_1</li> 
    <li id=1_1_2>Node 1_1_2</li> 
    <li id=1_1_3>Node 1_1_3</li> 
</ul> 

maintenant que nous avons tout cela sur l'écran que je veux avoir quelque chose comme si (ce qui est simplifié pour essayer de rester clair). J'utilise jQuery:

$('li').live('click', function() { 
    var path = $('li').attr('id'); 
    var parent = '#1_1'; // this would be calculated, assuming 1_1_ node was clicked 
    var grandParent = '#1'; // against calculated 

    var crap = $(parent).text(); // should be 'Node 1_1' 
    var darn = $(grandParent).text(); // should be 'Node 1' 
}); 

deux conneries et sacrément ne reçoivent aucune valeur. Je pense que c'est parce qu'ils ne sont pas sur la page et ont besoin d'un quelque chose comme un sélecteur "live", similaire aux événements "live" de jquery.

Je pense que cette réponse à cette question pourrait être ce que je veux, mais je ne sais pas si c'est le plus efficace ... alors j'ai posté une nouvelle question. Je vais essayer de le faire et voir ce que je viens avec et afficher des résultats. Le problème est cependant que j'aurai potentiellement 10 000 nœuds visibles sur l'écran à la fois, donc le rechargement puis le filtrage semblent plus lents qu'un type de sélection direct getById.

Répondre

0

J'ai juste essayé le code comme Html simple cela fonctionne parfaitement. Comme vous l'avez mentionné si certains des éléments "li" ne sont pas sur la page, ils ne se déclencheront pas pour eux. Donc, en utilisant le plugin "Live query" de jQuery, vous n'aurez pas besoin d'utiliser encore et encore le gestionnaire d'événements jQuery Click, pas besoin non plus de filtrer ou de recharger.

http://plugins.jquery.com/project/livequery/

+0

J'ai modifié ma question ci-dessus, comme je sais que le HTML serait au-dessus fonctionne bien si elle était sur la page pour commencer. Parce que les nœuds enfants ne sont pas sur la page jusqu'à ce que vous cliquiez sur un nœud parent rien n'est renvoyé dans les méthodes de texte. Je peux utiliser la "requête en direct" pour cliquer, mais je ne sais pas comment vous pensez que cela aidera à sélectionner le contenu qui est chargé à partir de ce clic. – rball

+0

Crap ... pour une raison quelconque, il ne fonctionnait pas comme prévu avant et semble maintenant obtenir du contenu qui est chargé par une requête ajah très bien. Ma faute. – rball

Questions connexes