Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MVC中JsTree jQuery插件中的Ajax调用_Jquery_Ajax_Asp.net Mvc 2_Jstree - Fatal编程技术网

MVC中JsTree jQuery插件中的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 () {

我正在尝试让JsTree工作,以便在我的MVC应用程序中获得文件夹视图。如果我在页面视图中使用现有的静态HTMLUL列表,一切都可以正常工作。但是我需要动态获取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>

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]...