我搜索了网站,根据各种较旧的答案,我确保'check-callback'设置为'true'。我也尝试在check-callback中使用一个函数。我发现了一个非常简单的jsfiddle,它表现出了工作行为[http://jsfiddle.net/3q9Ma/223/],并且不能真正理解对jstree.create_node()的调用有什么不同;成功警报不会触发,所以显然有些不对劲。我也尝试将'#'更改为null,根据jsfiddle文档,无济于事。
我在这里创建了一个展示非工作行为的jsfiddle:https://jsfiddle.net/z0tjc91v/
基本上,我有一个jstree,并希望使用文本框的内容在点击按钮时添加或删除元素。
HTML:
<label for="drawerName">Current Drawer:</label>
<input type="text" id="drawerName">
<div id="btnDiv">
<button id="newDrawerBtn" type="button" class="btn btn-success">
<span class="glyphicon glyphicon-plus-sign pull-left"></span>New Drawer
</button>
<button id="deleteDrawerBtn" type="button" class="btn btn-danger">
<span class="glyphicon glyphicon-remove-sign pull-left"></span>Delete Drawer
</button>
</div>
<div id="drawerTreeDiv">
</div>
使用Javascript:
$(function() {
var currentFile;
$('#drawerTreeDiv')
.on('changed.jstree', function(e, data) {
currentFile = data.instance.get_node(data.selected[0]).text;
$('#drawerName').val(currentFile);
})
.jstree({
'core': {
'multiple': false,
'check-callback': true,
'data': [{
'id': 'path/to/foo',
'text': 'foo'
}, {
'id': 'path/to/bar',
'text': 'bar'
}]
}
});
$('#newDrawerBtn').on('click', function() {
let filename = $('#drawerName').val();
let pathname = '/path/to/' + filename;
var newNodeJson = {
'id': pathname,
'text': filename
};
$('#drawerTreeDiv').jstree().create_node('#', newNodeJson, 'last', function() {
alert("added");
});
//$('#drawerTreeDiv').jstree().refresh();
});
$('#deleteDrawerButton').on('click', function() {
let filename = $('#drawerName').val();
let pathname = '/path/to/' + filename;
var node = $('#drawerTreeDiv').jstree().get_node(pathname);
$('#drawerTreeDiv').jstree().delete_node(node);
$('#drawerTreeDiv').jstree().refresh();
});
答案 0 :(得分:1)
我发现了问题。我将check-callback
设置为true,而不是check_callback
。当我做出改变时,它起作用了。