2012-10-23 13 views
7

Benim jstree'de, tümünün ana düğümü olan bir Kök düğümüm var. Ben dnd eklentisi kullandım. Ağacın herhangi bir yerinde sürükle bırak ve bırakmaya izin vermek istiyorum ama sadece kökün içinde, yani Kökten önce veya sonra değil. jstree sürükle ve bırak düğümünü önce ve sonra kısıtla

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

forumları ile kontrol ettikten sonra ben drag_check olay değil yalnızca ağacın içinde herhangi düğüm için yabancı düğümler için olduğunu buldular. Aynı ağaç düğümü için doğrulamak için crrm -> check_move olayını kullanmamız gerekiyor. Yardıma ihtiyacım olan yer burası. Düğüm [Root]'dan önce veya sonra bırakılırsa false döndürmek istiyorum. İşte

keman başlamaktır -

cevap

3

Sen, sadece gerçek dönmek için bir başka deyimi çok yakın ihtiyacımız vardır Bu herhangi bir ek işlevleri olmadan kutunun dışında ele alınabilir

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

http://jsfiddle.net/juyMR/23/ data.o (kaynak düğüm) ve data.np (düğüm ebeveyn) bir göz atın ve crrm check_move onların kimliklerini kontrol edin. Fiddle örneğine bakarak, data.np.attr ("id") 'nin "jsTreeDiv" ile eşitlenmesine izin vermeyin.

1

:

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

Düğüm türlerinizin her birinin içindeki "valid_children" ten, aynı zamanda bir seviye daha yüksek olabilir (yukarıdaki "ÖNEMLİ BİR TEKLİF" dediği yerde yukarıdaki kodu kontrol edin). .

Bu, tüm düğüm türü ROOT'unuzun çocuk sahibi olmasını sağlar, bu da kökten hiçbir şeyi taşıyamayacağınız anlamına gelir, ancak kök ağacın içindeki her yerde. İki önceden tanımlanmış türü vardır Tür eklentisi kullanıyorsanız

jstree mevcut sürümünde
+1

bu 'olduğu gibi' kullanarak bana gevşek özel simgeler yaptı .. vb. ama ben "valid_children" kullanmıştım: "tür" için "[" root "]' 'türünde aslında kullanmıyorum. Herşey çalışıyor. –

7

(3.0.1) daha kolay bir çözüm yoktur, kullanmak zorunda herşey

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

olduğunu. Biri yukarıda kullanılan "#". Bu, ağacın "gerçek" kök öğesi için otomatik olarak kullanılır; bu, dahili olarak kullanılan anlamına gelir. Yani eğer kendi kökünüzü herhangi bir ekstra konfigürasyon olmaksızın ilk düğüm olarak ekliyorsanız, her şey iyi çalışacaktır.