Jquery Sortable получает идентификатор базового div - PullRequest
0 голосов
/ 22 декабря 2010

Я использую функцию сортировки jquery для сортировки списка элементов в моем приложении.Видя, как мои списки становятся довольно большими, я решил реорганизовать их в подсписки, которые можно развернуть или свернуть.

У меня была идея, что когда пользователь перетаскивает элемент поверх заголовка подсписка и удерживает его курсортам за 750 мс список расширяется, но я столкнулся с проблемой, когда я не могу получить идентификатор идентификатора базового элемента div, потому что jquery, кажется, захватывает идентификатор элемента, который я перетаскиваю, а не то, что я делаю при наведении курсораover.

Есть ли какой-либо функционал или плагин, который я могу использовать для достижения этой цели (я уверен, что я не первый, у кого возникла эта проблема, но мой googlefu не смог найти ничего, что мне нужно).

Спасибо за любую помощь:)

Редактировать:

Вот идея того, что я пытаюсь сделать:

$('.categoryLi').hover(function(){expandCategory(this.id);});

function expandCategory(id)
{
    if(sectionDraggingMode)
    {   
        $(document).oneTime('750ms', 'expandCategoryTimer', function(){$('#'+id+' .category_content').show();});
    }
}

А вотСуть моего HTML:

<ul class="category">
    <li class="categoryLi" id="c8">
            <div class="sublistHeader"></div>
            <div id="cat_8_container" class="category_content" style="display: none;">
            //sortable list here
            </div>
    </li>
    <li class="categoryLi" id="c9">
            <div class="sublistHeader"></div>
            <div id="cat_9_container" class="category_content" style="display: none;">
            //other sortable list here
            </div>
    </li>
</ul>

То же самое, что и сейчас, когда я наводю курсор мыши на .categoryLi . Я вызываю expandCategory, отправляя идентификатор элемента, над которым я нахожусь, но он никогда не срабатываетпарение любого .categoryLi контейнер, за исключением родительского элемента, который я сейчас перетаскиваю.Мне нужно найти способ «заглянуть» за этим.Поэтому, если я перетаскиваю элемент из # c9 , jquery думает, что я всегда нахожусь над # c9

1 Ответ

1 голос
/ 23 декабря 2010

Хорошо получается, что jquery's droppable может быть использован для этого.Я определил область, которую я хочу использовать в качестве триггера для расширения, как область, которую можно сбрасывать, и сделал это только при срабатывании события over.

$('.categoryLi > .toolbar').droppable({
    accept: ".sectionLi",
    over: function(event, ui){
        $(this).siblings('.category_content').show();
        $('.section').sortable('refreshPositions');
    }
});

Есть некоторые проблемы с этим исправлением, но по крайней мере онорешил проблему с зависаниями.Надеюсь, что это может помочь кому-то в будущем.

...