Рекурсивная команда загрузки JQuery - PullRequest
1 голос
/ 04 мая 2010

Я использую JQuery для загрузки контента в элемент div, и все работает нормально.

$("#content").load('www.urltogetcontentfor.com')

Теперь я хочу расширить это. У меня есть структура дерева, в которой каждая ветвь может (или не может) иметь дочерние ветви, прикрепленные к ней. Я хочу, чтобы команда загрузки JQuery вызывалась рекурсивно, пока к ней не подключены дочерние элементы. Что-то вроде следующих шагов:

  1. вызовите функцию загрузки Jquery для загрузки содержимого в div 'content'.
  2. если функция загрузки возвращает дочерние элементы
  3. Вызовите функцию загрузки JQuery снова, чтобы получить детей
  4. повторяйте шаги 2 и 3, пока нет детей.

Кто-нибудь делал это в JQuery или знает о плагине, который обрабатывает это?

Спасибо

1 Ответ

3 голосов
/ 04 мая 2010

Рекурсивная загрузка контента может быть выполнена по этому принципу:

function loadTree($element) {
  $element.each(function(){
    this.load('url', function(){
      loadTree(this.find('.children'));
    });
  });
}

loadTree($('#content'));

Вы вызываете функцию с помощью объекта jQuery. Он перебирает элементы в объекте и вызывает load для каждого из них. При успешном обратном вызове он выбирает дочерние элементы в загруженном коде и вызывает себя.

Однако, если возможно, вы должны попытаться получить все дерево одним запросом, например, вернуть данные в виде JSON и создать элементы из этого.

...