我正在尝试让JsTree在我的MVC应用程序中获取文件夹视图。如果我在页面视图中使用现有的静态html ul列表,一切正常。但我需要动态获取ul列表,所以我正在尝试对文档中描述的JsTree进行ajax调用:
<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>
如您所见,我正在尝试在此列表的所有“a”元素上设置click事件。再次,如果ul列表直接写在div id =“demo2”中,这可以正常工作。但是当我尝试动态获取列表时,这些动态创建的元素上的click事件不起作用。什么都没发生。我已经检查了结果html,就我所见,一切都很好。就好像没有设置click事件,因为设置click事件时动态元素不存在,可能就是这样吗?如果是这样,我该怎么办呢?我需要能够在动态创建的元素上触发事件...我已经查看了JsTree文档,但它相当薄,基本上只是列出事件等等,而不是显示如何使用它们。我想如果我可以有一个回调,那么只有在创建了一个可以使它工作的树之后才设置click事件,但我无法弄清楚如何为此编写回调。 (我对jquery很新,并且用这个脚本完成了我的工作,但我需要它,所以我在学习的过程中一直在学习。)
答案 0 :(得分:4)
实际上,我通过与文档进行更多努力来找到答案!我怀疑一旦我对jQuery整体了解更多,文档会更容易理解......无论如何,如果有其他人感兴趣,这就是我必须做的事情来绑定事件,以便当树是创建:
$("#demo2")
.bind("loaded.jstree", function () {
$("a").click(function () {
url = "?url=" + $(this).attr("rel");
alert(encodeURI(url));
});
}).jstree(//...[the rest of the function the same as before]...