0

MVC アプリケーションでフォルダー ビューを取得するために JsTree を動作させようとしています。ページ ビューで既存の静的 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」要素にクリック イベントを設定しようとしています。繰り返しますが、ul リストが div id="demo2" に直接記述されている場合、これは正常に機能します。しかし、リストを動的に取得しようとすると、これらの動的に作成された要素のクリック イベントが機能しません。何も起こりません。結果のhtmlを確認しましたが、見る限りすべて問題ありません。クリックイベントが設定されているときに動的な要素が存在しないため、クリックイベントが設定されていないようです。もしそうなら、私はこれについて何ができますか?動的に作成された要素でイベントをトリガーできるようにする必要があります... JsTreeのドキュメントを見てきましたが、基本的にはイベントなどをリストするだけで、それらの使用方法を示していません。ツリーが作成された後にのみクリックイベントが設定されて動作するようにコールバックを設定できればと思いますが、このためのコールバックを作成する方法がわかりません。(私はjqueryに非常に慣れていないため、このスクリプトで頭を悩ませていますが、必要なので、学習しながら学習しようとしています)。

4

1 に答える 1

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]...
于 2010-08-17T16:08:49.437 に答える