MVC中JsTree jQuery插件中的Ajax调用
我正在尝试让JsTree工作,以便在我的MVC应用程序中获得文件夹视图。如果我在页面视图中使用现有的静态HTMLUL列表,一切都可以正常工作。但是我需要动态获取ul列表,所以我正在尝试文档中描述的对JsTree的ajax调用:MVC中JsTree jQuery插件中的Ajax调用,jquery,ajax,asp.net-mvc-2,jstree,Jquery,Ajax,Asp.net Mvc 2,Jstree,我正在尝试让JsTree工作,以便在我的MVC应用程序中获得文件夹视图。如果我在页面视图中使用现有的静态HTMLUL列表,一切都可以正常工作。但是我需要动态获取ul列表,所以我正在尝试文档中描述的对JsTree的ajax调用: <script type="text/javascript"> var url; $(document).ready(function () { $("a").click(function () {
<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>
var-url;
$(文档).ready(函数(){
$(“a”)。单击(函数(){
url=“?url=“+$(this).attr(“rel”);
警报(encodeURI(url));
});
});
$(函数(){
$(“#demo2”).jstree({
“html_数据”:{
“ajax”:{
“url”:“/主页/目录/”
}
},
“用户界面”:{
“选择限制”:2,
“选择多个修改器”:“alt”,
“所选父项\关闭”:“选择父项”,
“初始选择”:[“phtml_2”]
},
“主题”:{
“主题”:“经典”,
“点”:没错,
“图标”:正确
},
“插件”:[“主题”、“html_数据”、“ui”]
});
});
正如您所看到的,我正试图在该列表的所有“a”元素上设置一个单击事件。同样,如果ul列表直接写在div id=“demo2”中,这也可以正常工作。但是,当我尝试动态获取列表时,这些动态创建的元素上的单击事件不起作用。什么也没发生。我已经检查了结果html,就我所知一切都很好。这就好像没有设置click事件,因为设置click事件时动态a元素不存在,是吗?如果是,我能做些什么?我需要能够在动态创建的元素上触发事件。。。我已经查看了JsTree文档,但它相当精简,基本上只是列出事件等等,没有显示如何使用它们。我想如果我可以有一个回调,那么click事件只有在树被创建之后才被设置,这样它才能工作,但是我不知道如何为此编写回调。(我对jquery非常陌生,我对这个脚本非常熟悉,但我需要它,所以我正在努力学习它)。事实上,我自己通过与文档的斗争找到了答案!我想,一旦我对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]...
事实上,我自己通过与文档的斗争找到了答案!我想,一旦我对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]...