javascript - मैं jquery Jstree में सभी नोड्स कैसे खोलूं?




(9)

मैंने यहाँ सभी उत्तरों की कोशिश की और उन्होंने jsTree (v3.3.4) के साथ काम नहीं किया। क्या काम किया load_node.jstree ईवेंट:

    .on( 'load_node.jstree', function () {
      jstree.jstree( "open_all" );
    } )

मैं निम्नलिखित कोड का उपयोग कर रहा हूँ:

$("#treeview").jstree();
$("#treeview").jstree('open_all');

निम्नलिखित HTML के साथ:

<div id="treeview">
  <ul>
    <li>
      <a href="#">rubentebogt</a>
      <ul>
        <li>
          <a href="#" onclick="goTo('index.php?module=alarm&amp;pagina=dashboard&amp;id=6',false);">Beneden</a>
        </li>
        <li>
          <a href="#" onclick="goTo('index.php?module=alarm&amp;pagina=dashboard&amp;id=7',false);">Boven</a>
        </li>
      </ul>
    </li>
  </ul>
</div>

मेरी समस्या यह है कि सभी नोड्स बंद रहते हैं, मैं उन्हें jstree ('open_all') के साथ खोलने के लिए नहीं मिल सकता;


मैं jstree और Chrome के संस्करण 3 का उपयोग कर रहा हूं। लोड की गई घटना ने मेरे लिए काम नहीं किया, लेकिन तैयार घटना ने, jstree उदाहरण बनने के बाद भी किया:

$('#treeview').on('ready.jstree', function() {
    $("#treeview").jstree("open_all");          
});

http://www.jstree.com/api/#/?q=.jstree%20Event&f=ready.jstree


.bind("loaded.jstree", function (event, data) {
        // you get two params - event & data - check the core docs for a detailed description
        $(this).jstree("open_all");
    }) 

Html डेटा का उपयोग करते समय 'आप इसे शुरू में विस्तारित करने के लिए किसी भी <li> तत्व पर jstree- ओपन क्लास सेट कर सकते हैं, ताकि उसके बच्चे दिखाई दें।' - https://www.jstree.com/docs/html/

<li class="jstree-open" id="node_1">My Open Node</li>

उपरोक्त सभी उत्तर मेरे कार्यक्षेत्र में काम नहीं करते हैं। मैंने फिर से खोज की और इस लिंक को ढूंढा (Why is jsTree open_all () work for me? ) मददगार है, और अपना पोस्ट पोस्ट करें:

jstree संस्करण: 3.0.0-bata10

$(document).ready(function() {
  $("#tree").bind("loaded.jstree", function(event, data) { 
    data.instance.open_all();
  });
  $("#tree").jstree();
})

आप एनीमेशन को खोलने और बंद करने के लिए भी आवेदन कर सकते हैं:

$(document)
    .on("click", "#open-all-folders", function () {
        // param1 set to null to open/close all nodes
        // param2 is the duration in milliseconds
        $("#tree-ref").jstree().open_all(null, 200);
    })
    .on("click", "#close-all-folders", function () {
        $("#tree-ref").jstree().close_all(null, 200);
    });

(या इसी तरह .on('ready.jstree', function() { // code here } ) पर लागू होते हैं;


JsTree प्रलेखन "उप इष्टतम" है। डॉक्स स्पष्ट रूप से यह नहीं बताता है कि आरंभीकरण अतुल्यकालिक रूप से काम करता है। वहाँ core.loaded() :

एक डमी फ़ंक्शन, जिसका उद्देश्य केवल भरी हुई घटना को ट्रिगर करना है। ट्री के रूट नोड्स लोड होने के बाद एक बार इस घटना को चालू कर दिया जाता है, लेकिन इससे पहले कि शुरुआत में सेट किए गए किसी भी नोड को खोल दिया जाए।

यह सुझाव देता है कि एक घटना loaded.jstree है। पेड़ के सेटअप होने के बाद loaded.jstree को निकाल दिया गया है। आप अपने सभी नोड्स खोलने के लिए उस ईवेंट में हुक कर सकते हैं:

var $treeview = $("#treeview");
$treeview
  .jstree(options)
  .on('loaded.jstree', function() {
    $treeview.jstree('open_all');
  });

यदि आप पेड़ लोड होने पर सभी नोड खोलना चाहते हैं:

$("#treeview")
    // call `.jstree` with the options object
    .jstree({
        "plugins" : ["themes", "html_data","ui","crrm","sort"]
    }) 
    .bind("loaded.jstree", function (event, data) {
        // you get two params - event & data - check the core docs for a detailed description
        $(this).jstree("open_all");
    })      
});

आप इस कथन के साथ स्ट्रिंग contains आसानी से एक विधि contains कर सकते हैं:

String.prototype.contains = function(it) { return this.indexOf(it) != -1; };

नोट: इसका उपयोग न करने के लिए वैध तर्क के लिए नीचे दी गई टिप्पणियां देखें। मेरी सलाह: अपने निर्णय का प्रयोग करें।

वैकल्पिक रूप से:

if (typeof String.prototype.contains === 'undefined') { String.prototype.contains = function(it) { return this.indexOf(it) != -1; }; }






javascript jquery jstree