$ jQuery Tree из данных json ---> .live убивает меня - PullRequest
0 голосов
/ 02 июля 2010

Я пытаюсь построить дерево из данных json, эти данные загружаются по требованию из файлов php. Моя проблема в том, что я не могу найти способ добраться до 3 уровня;). Вот мой код:

        $(document).ready(function()
        {
        //Get the screen height and width
        var Height = $(document).height()/2;
        var Width = $(window).width()/2;

        $("#div1").hide();
        $("#div2").hide('slow');
        $.ajax(
        {
            type: 'post',
            async: true,
            url: "getparents.php",
            data: {'id' : 12200},
            dataType: "json",
            cache: false,
            beforeSend: function ()
            {
                //Show the Loading GIF at centered position
                $('#loading').css({'top': Height, 'left': Width}).show();
            },
            success: function(json_data)
            {
                $("#div1").empty().show();
                $('<ul class="parentContainer"></ul>').appendTo("#div1");
                $.each(json_data, function(key, object)
                {
                    $('<li id="node">'+object.name+'</li>').data('id', object.id).appendTo(".parentContainer");
                    if (object.childbool == true)
                    {
                        $('li:last').addClass('childfull')
                    }
                });
            },
            error: function ()
            {
                $('#loading').hide();
                alert('Something Went Wrong with the Loading please hit back in a minute');
            },
            complete: function ()
            {
                $('#loading').hide();
            }
        });

        function getChild(id, node)
        {
           $.ajax(
           {
                type: 'post',
                async: true,
                url: "getchilds.php",
                data: {'id' : id},
                dataType: "json",
                cache: false,
                beforeSend: function ()
                {
                    $('#loading').show();
                },
                success: function(json_data)
                {
                    $('<ul class="childContainer"></ul>').appendTo(node);
                    $.each(json_data, function(key, object)
                    {
                        $('<li id="node">'+object.name+'</li>').data('id', object.id).appendTo(".childContainer");
                        if (object.childbool == true)
                        {
                            $('li:last').addClass('childfull')
                        }
                    });
                },
                error: function ()
                {
                    $('#loading').hide();
                    alert('Something Went Wrong with the Loading please hit back in a minute');
                },
                complete: function()
                {
                    $('#loading').hide();
                }
            });
        }

        $("li.childfull, li.openchildfull").live('click',function()
        {     
            if ($('li.childfull'))
            {
                var node = $(this);
                var id= $(this).data('id');
                $(node).html(getChild(id, node));
                $(node).removeClass().addClass('openchildfull');
            }
            else
            {
                $(node).removeClass().addClass('childfull');
                $(node).children().remove();
            }
        });
    });

Я думаю. Жив убивает меня. Я загружаю родителей; когда я нажимаю на одну, я получаю ее детей ВСЕ красиво и хорошо, но когда я нажимаю на ребенка, чтобы получить его детей, я получаю очень забавное поведение. Я получаю правильные отступы для своих детей, но без class = "childfull", и получаю другую копию их, но не с правильными отступами, но с правильным классом.

П.С .: Вы не хотите, чтобы я описывал вам, что происходит, когда я нажимаю на испорченную 3-ю лвл:

1 Ответ

1 голос
/ 02 июля 2010

Вместо того, чтобы испытывать головную боль при создании собственного дерева, взгляните на плагин jstree. Вы можете передавать различные форматы, включая JSON. Это позволяет полностью настроить и допускает бесконечные (возможно: p) дочерние уровни.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...