Проблема с вложенным jQuery sortables

Вот основная структура HTML для моей страницы:

  • Root element
    • Level One a
    • Level One b
    • Level One parent
      • Level Two a
      • Level Two parent
        • Level Three a
        • Level Three b
      • Level Two b
    • Level One c

например:

  • Корневой элемент
    • Уровень один a
    • Уровень Один b
    • Уровень Один родитель
      • Уровень два a
      • Уровень Два родителя
        • Уровень три a
        • Уровень Три b
      • Уровень Два b
    • Уровень Один c

Могло быть любое количество объектов на каждом уровне отступа мимо корня, но только когда-либо будет 3 уровня и только один родитель на уровень (т.е.: существует всегда точно 3

    s под корнем, но количеством
  • s является переменным).

    Я позволяю пользователю переупорядочивать эту структуру с помощью UI jQuery Поддающийся сортировке плагин. Для добавления нового объекта существует три группы объектов (уровень объекты, уровень два объекта, объекты уровня 3), которые находятся рядом на странице с этим деревом. Пользователь может перетащить оттуда в список для добавления его - но это должно быть добавлено на соответствующем уровне.

    У меня уже есть эта работа с помощью draggable с connectToSortable опция:

    $('ul.availableItems').each(function(i) {
        var selector = "#selectedItemsTop > ul";
        for (var j = 0; j <= i; ++j) { // count from 0 to [0, 1, 2]
            selector += " > li > ul";
        }
        // eg: selector == "#selectedItemsTop > ul > li > ul"
        // eg: selector == "#selectedItemsTop > ul > li > ul > li > ul"
        // eg: selector == "#selectedItemsTop > ul > li > ul > li > ul > li > ul"
        $(this)
            .find('li')
            .draggable({
                connectToSortable : selector
            })
        ;
    });
    $('#selectedFieldsTop > ul > li ul').sortable();
    

    Как я сказал, это работает... во всем кроме IE. Уровень объекты работают отлично, однако никакие объекты уровня 2 или 3, будет добавлен в поддающееся сортировке. Попытка отсортировать один из объектов Уровня 2 или 3, которые уже являются, там заставляет его взять весь "Уровень Один Родительский" литий и переместить все это вокруг.

    Есть ли что-нибудь, о чем Вы могли думать, который сделает эту работу в Firefox, но не IE? Вы могли думать о другом способе обработать это?

    Версии: Firefox 3.6, IE7, jQuery 1.3.2, jQuery UI 1.7.2

    Обновление:
    Вот рабочий код JSBin: http://jsbin.com/ixabo/edit - Неудивительно, это не работает в IE, но я думаю, что это - проблема с JSBin (" _console, не определено"). Видеть, что он полуработает, возможно, скопировать/вставить в локальный файл и открывает его в IE.

8
задан nickf 8 February 2010 в 23:37
поделиться

2 ответа

Также были проблемы с сортировкой ранее: мой случай был с аккордеоном и сортировкой внутри. Я не смог получить ясного ответа, но если вы посмотрите на любую из реализаций дерева, то они используют перетаскивание напрямую и не сорбируются.

Основываясь на этом опыте - не очень точном, насколько я знаю - я бы согласился с akiller и сказал: возьмите хороший плагин дерева, вместо того, чтобы пытаться сделать это самостоятельно с помощью sortable. jsTree довольно хорош и должен делать свою работу - есть и другие, если по каким-то причинам jsTree не удовлетворяет вашим потребностям.

1
ответ дан 6 December 2019 в 01:40
поделиться

Ты можешь использовать другие плагины? jsTree делает такие вещи очень хорошо.

1
ответ дан 6 December 2019 в 01:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: