Saltar al contenido

¿Obteniendo todos los nodos seleccionados en jstree en el evento de verificación?

Hacemos una revisión completa cada artículo en nuestro sitio web con el objetivo de mostrarte siempre información más veraz y actualizada.

Solución:

Debido al modo estricto, obtendrá la excepción de que si intenta usar get_bottom_checked

TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them.
at Function.invokeGetter (:2:14)

Puedes usar data.selected desde su controlador de eventos marcado o desmarcado si solo desea los ID de los nodos seleccionados, pero si necesita más que eso, puede usar ‘data.instance._model.data’. Como puede ver en mi ejemplo, estoy tratando de alertar si solo hay un elemento seleccionado y ese estado está abierto. En el ejemplo de código, puede ver la Alerta si abre `Europe1 y selecciona la casilla de verificación.

var data1 = [
  "id": "W",
  "text": "World",
  "state": 
    "opened": true
  ,
  "children": [
      "text": "Asia"
    ,
    
      "text": "Africa"
    ,
    
      "text": "Europe",
      "state": 
        "opened": false
      ,
      "children": ["France", "Germany", "UK"]
    
  ]
];

function testit(data) 
  alert(data.length + ' and ids are ' +data );
  for (var count = 0; count < data.length; count++) 

  
  

$('#Tree').jstree(
  core: 
    data: data1,
    check_callback: false
  ,
  checkbox: 
    three_state: false, // to avoid that fact that checking a node also check others
    whole_node: false, // to avoid checking the box just clicking the node 
    tie_selection: false // for checking without selecting and selecting without checking
  ,
  plugins: ['checkbox']
)
$('#Tree').on("check_node.jstree uncheck_node.jstree", function(e, data) 
 if (data.selected.length === 1)  alert(data.instance._model.data[data.selected].state['opened']); 
  testit(data.selected);
);



De acuerdo con esto, puede obtener todos los nodos seleccionados on change evento como este:

    $('#jstree').on('changed.jstree', function (e, data) 
    var i, j, r = [];
    for(i = 0, j = data.selected.length; i < j; i++) 
      r.push(data.instance.get_node(data.selected[i]).text);
    
    $('#event_result').html('Selected: ' + r.join(', '));
  ).jstree();

Si guardas alguna vacilación o disposición de renovar nuestro reseña eres capaz de dejar una glosa y con gusto lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *