2012-09-05 43 views
0

我正在使用jstree创建一个新节点,并且它错误地显示节点。jstree在创建节点后显示不正确

下面的两张图片是创建后节点不在位置的图片。

它们位于div内的表内。 div是可滚动的,节点在初始创建时随着滚动移动。

一旦我取消选择该节点,它将转到正确的位置。

Picture of node out of place.“另一节点出来的地方”

Picture of node out of place.“被创建之后的节点出来的地方”显然这种情况发生时要重命名的为好。

回答

0

改性_show_input功能jstree.js如下:

h2 = obj.children('a:first').after(
    $("<input />", { 
     "value" : t, 
     "class" : "jstree-rename-input", 
     // "size" : t.length, 
     "css" : { 
      "padding" : "0", 
      "border" : "1px solid silver", 
      "left" : (rtl ? "auto" : (w1 + w2 + 4) + "px"), 
      "right" : (rtl ? (w1 + w2 + 4) + "px" : "auto"), 
      "top" : "0px", 
      "height" : (this.data.core.li_height - 2) + "px", 
      "lineHeight" : (this.data.core.li_height - 2) + "px", 
      "width" : "150px" // will be set a bit further down 
     }, 
     "blur" : $.proxy(function() { 
      var i = obj.children(".jstree-rename-input"), 
       v = i.val(); 
      if(v === "") { v = t; } 
      h1.remove(); 
      i.remove(); // rollback purposes 
      this.set_text(obj,t); // rollback purposes 
      this.rename_node(obj, v); 
      callback.call(this, obj, v, t); 
      obj.css("position",""); 
     }, this), 
     "keyup" : function (event) { 
      var key = event.keyCode || event.which; 
      if(key == 27) { this.value = t; this.blur(); return; } 
      else if(key == 13) { this.blur(); return; } 
      else { 
       h2.width(Math.min(h1.text("pW" + this.value).width(),w)); 
      } 
     }, 
     "keypress" : function(event) { 
      var key = event.keyCode || event.which; 
      if(key == 13) { return false; } 
     } 
    }) 
).siblings(".jstree-rename-input"); 

的第一行被改变在OBJ第一锚元件,这是一个LI元素之后追加输入对象。最后一行被更改为用class .jstree-rename-input返回所有兄弟。

也删除了输入和obj上的绝对定位。