Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Дерево


Автор: MoLeX 21.11.2009, 09:44
Привет. 
Перевожу панель управления с фреймов на AJAX, и с толькнулся с проблемой формирования дерева (скрипт существующего дерева в аттаче). Так вот, сам этот скрипт очень старый, хотелось бы поновее и с той же функциональностью (в зависимости от того куда нажал пользователь, иконка или текст, происходят события).


P.S. использую jQuery

Автор: MoLeX 22.11.2009, 16:47
переделал функционал и взял первое попавшееся дерево

Автор: Aliance 23.11.2009, 12:50
Советую: http://javascript.ru/ui/tree

Автор: MoLeX 24.11.2009, 11:49
Aliance, я взял плагин jquery.simple.tree, у меня все на jquery завязано

Автор: Sorbing 29.11.2009, 23:35
день добрый.
Не так давно начал изучать jQuery /влюбился, второй раз! Первый раз была девочка )))) /
Фрэймворк действительно оччень функционален... Решил практику проходить с пользой - написать функциональный файловый менеджер.
Да есть уже готовые (отмечу eXtplorer), но уверен, что двухпанельный FAR (типа TC) ,удет удобней...
Столкнулся с первой проблемой, которую своими силами решить пока не смог:
1. Древовидное меню, структура каталогов на SimpleTree 1-0.3 (на текущий момент последняя версия).

Не отправляется следующий AJAX запрос при клике на каталоге ([ul class='ajax']).

Что бы понятней было... ))

--------------index.php--------------
Код

<html>
<head>
<title>FAR</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
<link type="text/css" rel="stylesheet" href="jquery/simpleTreeDandD/style.css" />
<script type="text/javascript" src="jquery/simpleTreeDandD/js/jquery.simple.tree.js"></script>
<script type="text/javascript">

$(document).ready(function(){
    simpleTreeCollection = $('.simpleTree').simpleTree({
        autoclose: false,
        afterClick:function(node){},
        afterDblClick:function(node){},
        afterMove:function(destination, source, pos){},
        afterAjax: function()
        {
        // $(".simpleTree").simpleTree(); // Так не работает ))
        },
        animate:false
    });
});

</script>
</head>
<body>

<ul class="simpleTree">
    <li class="root" id="1"><span>Tree Root 1</span>
    <ul>
        <li id="2"><span>Tree Node 1-1</span>
        <ul class="ajax">
            <li id="3">{url:ajax/reading_folder.php}</li> <!-- ЭТОТ ЗАПРОС ВЫПОЛНЯЕТСЯ -->
        </ul>
        </li>
    </ul>
    </li>
</ul>

</body>
</html>


--------------ajax/reading_folder.php--------------


Код

<li>
    <span>КАТАЛОГ</span>
    <ul class="ajax">
        <li id="22">{url:ajax/reading_folder.php}</li> 
    </ul>
<li>
<li>
    <span>КАТАЛОГ</span>
    <ul class="ajax">
        <li id="33">{url:ajax/reading_folder.php}</li> 
    </ul>
<li>



Первый запрос к файлу reading_folder.php выполняется. В результате в списке появляется еще два каталога id=22 и id=33.
При открытии первого каталога, AJAX запрос также выполняется и отображается его содержимое (я не указывал все элементы [li])
А ТЕПЕРЬ... Если кликаем на втором каталоге - ЗАПРОС к файлу reading_folder.php НЕ ВЫПОЛНЯЕТСЯ...
..только GIF (loader) появляется.
Тестил с помощью FireBug, уходит только два запроса, не важно на каком подкаталоге нажать - на первом или на втором...

Уже не знаю где копать...  smile  может есть мысли по этому поводу?
Заранее спасибо за внимание.

Автор: Sorbing 30.11.2009, 15:43
А-А-А-А-А!!!!  smile  Я лопухнулся!  smile  В следующий раз буду повнимательней!
Проблема была в том, что я не добавлял атрибут ID к спискам (LI). 
А в рабочем примере все элементы были с уникальными ID.
Так что осталось подумать над организацией уникальных ID для списков (дирректорий и файлов), 
которые возвращает AJAX.
Всем отклинувшимся огромная благодарность. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)