我正在使用 jstree 创建一个新节点,但它显示的节点不正确。
下面两张图是节点创建后不合适的图片。
它们位于 div 内的表格内。div 是可滚动的,并且节点在初始创建时随着滚动而移动。
一旦我取消选择节点,它就会转到正确的位置。
节点不合适的图片。“创建后节点不合适”
节点不合适的图片。“另一个节点不合适”
显然,重命名也会发生这种情况。
修改jstree.js中的_show_input函数如下:
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 元素。最后一行更改为返回所有类为 .jstree-rename-input 的兄弟姐妹。
还删除了输入和 obj 的绝对定位。