У меня есть этот рабочий пример jstree, правильно инициированный, позволяющий просматривать древовидную структуру и действие триггера, когда пользователь щелкает узел: https://jsfiddle.net/8v4jc14s/ .
Когда я пытаюсь загрузить дерево динамически, оно не работает:
<div id="container">
<button onclick="load()">Load tree</button>
</div>
<script>
$(function () {
$('#tree_div')
.jstree()
.on('changed.jstree', function (e, data) {
alert(data.selected);
});
});
function load() {
document.getElementById("container").innerHTML = "<div id="tree_div"><ul><li id="Root">Root<ul><li id="Sub">Sub</li></ul></li></ul></div>";
}
</script>
Есть ли способ «инициировать» дерево после динамической нагрузки?
Можно скопировать, но нельзя привязать события к скопированному элементу, так как инициализирован только один экземпляр jstree.
Если вы хотите другой jstree, вам нужно сделать другой экземпляр.
Вы можете проверить это:
https://jsfiddle.net/8v4jc14s/3/
В ходе дальнейших исследований я нашел вопрос: Как выполнить динамически загружаемый блок JavaScript?
Я использовал ответ от Романа, придумавшего ниже код, который, похоже, работает хорошо.
Надеюсь, это поможет другим, как я потерял в тайнах JS 🙂