2012-10-23 11 views
7

मेरी जेस्ट्री में मेरे पास रूट रूट है जो सभी का मूल नोड है। मैंने डीएनडी प्लगइन का उपयोग किया है। मैं पेड़ में कहीं भी ड्रैग और ड्रॉप करने की अनुमति देना चाहता हूं, लेकिन केवल रूट के अंदर रूट के पहले या बाद में नहीं।jstree ड्रैग और ड्रॉप रूट के पहले और बाद में

- [Root] 
    - Node 1 
     - Node 1.1 
     - Node 1.2 
    + Node 2 
    - Node 3 
     + Node 3.1 

मंचों के साथ की जाँच के बाद मैंने पाया कि drag_check घटना केवल और नहीं पेड़ के भीतर किसी भी नोड के लिए विदेशी नोड्स के लिए है। उसी पेड़ नोड के लिए मान्य करने के लिए हमें crrm -> check_move ईवेंट का उपयोग करने की आवश्यकता है। यही वह जगह है जहां मुझे मदद चाहिए। अगर [Root] से पहले या बाद में नोड गिरा दिया जाता है तो मैं झूठी वापसी करना चाहता हूं।

यहाँ बेला शुरू करने के लिए है - http://jsfiddle.net/juyMR/23/

उत्तर

3

तुम बहुत करीब है, तुम सिर्फ एक और को बयान कर रहे हैं की जरूरत है सही वापस जाने के लिए

http://jsfiddle.net/blowsie/juyMR/59/

"crrm" : { 
     "move" : { 
      "check_move" : function (data) { 
       // alert(data.r.attr("id")); 
       if(data.r.attr("id") == "999") { 
        return false; 
       } 
       else { 
        return true; 
       } 
      } 
     } 
    }, 
1

data.o (स्रोत नोड) और data.np (नोड माता पिता) पर एक नजर डालें और crrm check_move में उनकी आईडी का निरीक्षण किया। बेवकूफ उदाहरण को देखते हुए, data.np.attr ("id") को बराबर "jsTreeDiv" की अनुमति न दें।

1

यह किसी भी अतिरिक्त कार्य के बिना बॉक्स से बाहर संभाला जा सकता है:

$("#tree").jstree({ 
    "types" : {  
     "valid_children" : [ "root" ], //<== THIS IS THE IMPORTANT ONE ! 
        "types" : { 
           "default" : { 
            "valid_children" : "none" 
           }, 
           "root" : { 
            "valid_children" : "default" 
           } 
           } 
       } 
}); 

आप अपने प्रत्येक नोड प्रकारों के अंदर "valid_children" का उल्लेख कर सकते हैं, लेकिन एक स्तर ऊपर भी (ऊपर दिए गए कोड में चेक करें जहां यह कहता है "यह महत्वपूर्ण है" ।

यह वैश्विक रूप से केवल आपके नोड-प्रकार रूट को बच्चों के लिए अनुमति देगा, जिसका अर्थ है कि आप रूट से कुछ भी नहीं ले जा सकते हैं, बल्कि हर जगह रूट पेड़ के अंदर।

+1

इस 'जैसा है' का उपयोग करके मुझे कस्टम आइकन..एटीसी बनाया गया। लेकिन मैंने '" valid_children "का उपयोग किया: [" root "]' टाइप के लिए '" # "' कि मैं वास्तव में एक प्रकार के रूप में उपयोग नहीं करता हूं। सब कुछ काम करता है। –

7

jstree के वर्तमान संस्करण में (3.0.1) वहाँ एक और अधिक आसान समाधान है, सब कुछ आप का उपयोग करने के आप प्रकार प्लगइन का उपयोग कर रहे हैं, तो वहाँ दो प्रकार के होते हैं पूर्वनिर्धारित

"types" : {  
     "#" : { 
      "max_children" : 1 
     } 
    }, 

है। एक उपरोक्त "#" है। यह स्वचालित रूप से पेड़ के "वास्तविक" मूल तत्व के लिए प्रयोग किया जाता है, जिसका अर्थ आंतरिक रूप से उपयोग किया जाता है। इसलिए यदि आप बिना किसी अतिरिक्त कॉन्फ़िगर के पहले नोड के रूप में अपना रूट जोड़ रहे हैं तो सब कुछ ठीक काम करेगा।

संबंधित मुद्दे