2009-07-03 6 views
6

J'utilise le plugin JQuery Treeview pour afficher certaines données. Fondamentalement, je voudrais ajouter un événement de clic à l'enfant < li> éléments qui copie leur innerhtml dans un autre div sur la page. Cependant, je n'ai pas été en mesure d'affecter un événement click à ces éléments li> <.Attribuer des événements de clic à < li > dans JQuery Treeview

En espérant que quelqu'un a foulé ce sol avant et peut fournir de l'aide.

Merci.

+0

Avez-vous essayé juste: (» #nameOfLi "). click (function() {alert ('foo');}) ;? – Peter

+1

oui - Il ne semble pas attacher le clic même pour moi. Le même code attachera un événement click à des éléments n'importe où sur la page en dehors de l'arborescence (évidemment). – WorkingWeb

+0

Pourriez-vous poster un extrait de code? – Peter

Répondre

6

En utilisant le balisage de l'exemple à http://docs.jquery.com/Plugins/Treeview:

$("span.file, span.folder", "#example li") 
    .click(function() { alert($(this).text()); }); 

œuvres. La manipulation du clic sur les éléments LI capture eux-mêmes les contractions et l'expansion des branches.

+1

Merci, votre commentaire m'a fait réaliser que c'était la façon dont je construis l'arborescence (via JSON et l'ajout de branches) qui causait le problème. J'ai été capable de résoudre mon problème en affectant l'événement click juste après avoir ajouté les branches générées dynamiquement. – WorkingWeb

6

Vous pouvez utiliser la construction .live. Pour moi, cela fonctionne:

$('li','ul#menu').live('click', function(){ 
    alert('Click event');  
}); 
0

Essayez comme ça

$('li:not(:has(>ul))', 'ul#menu').live('click', function() {    
       alert($(this).text()); 
      }); 

il ajoutera événement click au nœud feuille uniquement (pas de nœud racine)

1
<li onclick="selectNode(event, this);" id="${node2.nodeId}" class="closed"> 
    <span class="folder"> ${node2.name} </span> 
</li> 




function selectNode(event, nodeHtmlEl) { 
    // IE 
    if ($.browser.msie) { 
     window.event.cancelBubble = true; 
    } 
    if(event.stopPropagation) { 
     event.stopPropagation(); 
    } 
    alert("selectNode ID: " + $(nodeHtmlEl).attr("id")); 
} 
Questions connexes