2010-01-27 6 views
2

J'utilise le plugin jQuery Treeview. Jetez un oeil à la "Sample 1 - default" fourni sur la page de démonstration du plugin http://jquery.bassistance.de/treeview/demo/. Dans mon cas, tous les dossiers et fichiers sont des liens. Si je clique par exemple sur le "Dossier 2" étendu, il va d'abord se replier et ensuite suivre l'emplacement du lien. Le comportement que je voudrais, c'est que seuls ceux qui se sont effondrés se développeront en premier et si cela s'est déjà étendu, il restera comme ça.jquery treeview plugin modifier le comportement du lien (éviter l'effondrement)

Le code dans le plugin (jquery.treeview.js) qui font alterner le comportement est le suivant:

66 this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event) { 
67 toggler.apply($(this).next()); 
68 }).add($("a", this)).hoverClass(); 

je l'ai déjà compris comment obtenir tous les liens, ce qui devrait être changé:

$('a').parent().parent().filter('.collapsable') 

Le résultat sera un tableau de tous li qui sont actuellement collapsable (élargi): [. li, li.collapsable]

Mais je ne sais pas comment t o procéder à partir de là :-(Espérons que quelqu'un pourrait me aider le long ...

Je l'ai déjà changé le linkbehavior pour sucessfully le lien actuellement sélectionné (class = sélectionné) avec ce code:

$(".current").click(function(e){ 
     e.preventDefault(); 
    }); 

Un grand merci à avance!

Répondre

2

peut-être on ne sait pas ce que je veux vraiment faire, je vais donc essayer d'améliorer mon temps ;-) verbalisation suivant

La réponse à ma question est:

$('li').filter('.collapsable').find('a:first:not(.current)').click(function(e){ 
      e.stopImmediatePropagation(); 
     }); 

Peut-être aide Quelqu'un qui cherche quelque chose de similaire.

Meilleures salutations !!

UPDATE (la solution affichée ci-dessus fonctionne pas si l'utilisateur a élargi un nœud sans recharger la page après)

$('a').click(function(e){ 
     if ($(this).is('.current')) { 
      e.preventDefault(); 
     } else if ($(this).parent().parent().is('.collapsable')) { 
      e.stopImmediatePropagation(); 
     };   
    }); 

Celui-ci fonctionne comme il le devrait. :-)

Questions connexes