11
votes

Jstree - désactiver la sélection sur un nœud parent, mais autoriser l'expansion en cliquant sur

J'essaie d'essayer l'excellent Jstere 3.0.2. J'ai un arbre avec un niveau de nœuds d'enfants. Lorsqu'un nœud parent a cliqué, je le souhaite de se développer, mais je ne veux pas que le nœud parent soit sélectionnable - seuls les nœuds d'enfants doivent être sélectionnables.

Je peux obtenir les nœuds des parents pour ouvrir le clic sur Utiliser: xxx

mais je ne peux pas comprendre comment rendre les nœuds parents non sélectionnables.
J'ai créé un type et j'ai défini "select_node" sur false: xxx

puis attribué au nœud parent à l'aide de: xxx

mais les nœuds parents sont toujours sélectionnables. J'ai créé un jsfiddle ici: http://jsfiddle.net/john_otoole/ry7n6/7/ Dans cet exemple, j'utilise les éléments suivants pour afficher si quelque chose est sélectionnable: xxx

econaille sur la manière d'empêcher la sélection d'un nœud parent?


2 commentaires

Cela pourrait vous aider à vous aider: groups.google.com/forum/#! Sujet / JSTRE / AV0GRAVR1TM


J'ai vérifié ce lien mais je ne pouvais pas le faire fonctionner - peut-être que la syntaxe ne fonctionne pas dans Jstree 3.0.2. En fin de compte, j'ai décidé de laisser les nœuds des parents à être sélectionnables et je vais y travailler.


3 Réponses :


19
votes

Je sais que cela est bien en retard à la fête ici, mais j'avais le même problème.

C'est comme ça que je me suis entendu - peut-être que cela aidera quelqu'un d'autre qui a ce problème. < Pré> xxx

Fondamentalement, désélectionnez le nœud juste après qu'il a été sélectionné s'il a des enfants, puis développez-le.


1 commentaires

Merci pour ce truc, je suggère d'utiliser data.instance au lieu de $ ('# divccsss'). Jstree (vrai) du rappel



3
votes

Plus que très tard à la fête, mais en utilisant Jstree 3.0.4, décorer le nœud racine comme si: xxx pré>

ouvre la racine lorsqu'il est appelé et désactive le clic. J'espère que cela aide. P>

<div id="js_tree_container">
    <ul>
        <li data-jstree='{ "opened" : true, "disabled" : true }'>
            <a href="javascript:void(0);" tite="Root Category">
                ROOT NODE
            </a>
            <ul>
                <li>
                    <a href="javascript:void(0);">
                        <span>Child One</span>
                    </a>
                    <ul>
                        <li>
                            <a href="javascript:void(0);">
                                <span>Child A</span>
                            </a>
                        </li>
                        <li>
                            <a href="javascript:void(0);">
                                <span>Child B</span>
                            </a>
                        </li>
                    </ul>
                </li>
                <li>
                    <a href="javascript:void(0);">
                        <span>Child Two</span>
                    </a>
                </li>
            </ul>
        </li>
    </ul>
</div>

<script>
    $('#js_tree_container').jstree({
        'core': {
            'themes': {
                'name': 'default',
                'responsive': true
            },
            'check_callback': true
        }
    }).bind("select_node.jstree", function (e, data) {
        var href = data.node.a_attr.href;
        document.location.href = href;
    });
</script>


1 commentaires

Merci pour le suivi!



2
votes

J'ai eu un problème différent pour empêcher select_node.jstree événement pour les articles handicapés, mais je pense que cela peut fonctionner pour votre cas.

J'ai résolu mon problème en utilisant "ConditionalSelect" plugin. P>

$('#jstree').jstree({
  'conditionalselect' : function (node) {
    // Check node and call some method
    return (node['someProperty']) ? true : false;
  },
  'plugins' : ['conditionalselect'],
  'core' : {
    <core options>
  }
});


0 commentaires