Я пытаюсь заставить JsTree работать, чтобы получить представление папки в моем приложении MVC. Все работает нормально, если я использую существующий статический HTML-список ul в представлении страницы. Но мне нужно получить список ul динамически, поэтому я пытаюсь вызвать ajax для JsTree, описанного в документации:
<script type="text/javascript">
var url;
$(document).ready(function () {
$("a").click(function () {
url = "?url=" + $(this).attr("rel");
alert(encodeURI(url));
});
});
$(function () {
$("#demo2").jstree({
"html_data": {
"ajax": {
"url": "/Home/Directories/"
}
},
"ui": {
"select_limit": 2,
"select_multiple_modifier": "alt",
"selected_parent_close": "select_parent",
"initially_select": ["phtml_2"]
},
"themes": {
"theme": "classic",
"dots": true,
"icons": true
},
"plugins": ["themes", "html_data", "ui"]
});
});
</script>
Как видите, я пытаюсь установить событие click для всех элементов "a" этого списка. Опять же, это работает нормально, если список ul написан непосредственно в div id = "demo2". Но когда я пытаюсь получить список динамически, событие click для этих динамически созданных элементов не работает. Ничего не произошло. Я проверил результат HTML, и все хорошо, насколько я вижу. Как будто событие click не установлено, потому что динамические элементы a не существуют, когда установлено событие click, может ли это быть? Если так, что я могу сделать с этим? Мне нужно иметь возможность инициировать события на динамически создаваемых элементах ... Я посмотрел в документации JsTree, но он довольно тонкий, в основном просто перечисляет события и так далее, не показывая, как их использовать. Я думаю, если бы я мог иметь обратный вызов, чтобы событие click было установлено только после того, как дерево было создано, что бы оно заработало, но я не могу понять, как написать обратный вызов для этого. (Я очень новичок в jquery и разбираюсь с этим сценарием, но мне он нужен, поэтому я стараюсь учиться по ходу дела).