无法动态 add/delete 元素到 jstree
Unable to dynamically add/delete elements to jstree
我搜索了该站点,根据各种较早的答案,我确保 'check-callback' 设置为 'true'。我还尝试在检查回调中使用一个函数。我发现了一个非常简单的 jsfiddle,它展示了工作行为 [http://jsfiddle.net/3q9Ma/223/],但并不真正理解对 jstree.create_node(); 的调用有何不同;成功警报没有触发,所以显然出了点问题。根据 jsfiddle 文档,我还尝试将“#”更改为 null,但无济于事。
我创建了一个 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();
});
我发现了问题。我将 check-callback
设置为 true,而不是 check_callback
。当我进行更改时,它起作用了。
我搜索了该站点,根据各种较早的答案,我确保 'check-callback' 设置为 'true'。我还尝试在检查回调中使用一个函数。我发现了一个非常简单的 jsfiddle,它展示了工作行为 [http://jsfiddle.net/3q9Ma/223/],但并不真正理解对 jstree.create_node(); 的调用有何不同;成功警报没有触发,所以显然出了点问题。根据 jsfiddle 文档,我还尝试将“#”更改为 null,但无济于事。
我创建了一个 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();
});
我发现了问题。我将 check-callback
设置为 true,而不是 check_callback
。当我进行更改时,它起作用了。