Я боролся с сортируемым jQuery.Первоначально я попытался выполнить Nettuts учебник на сортируемом, но нашел метод столбца макета панели мониторинга слишком сложным.Я хотел иметь двойные виджеты для графиков и т. Д. Итак, у меня есть родительский виджет div с фиксированной шириной и я не использую столбцы.Фиксированная ширина может вместить 2 обычных виджета или 1 двойной виджет шириной.Виджеты просто аккуратно оборачиваются внутри контейнера, и я хочу просто отсортировать порядок, в котором находятся виджеты.
У меня проблема с сортируемым поведением.Я могу перетаскивать и сортировать виджеты, но заполнитель не находится в правильном месте, когда происходит щелчок и перетаскивание.Если я возьму нижний дескриптор виджета и переместу его, заполнитель появится вверху, а его ширина контейнера виджета (#widgets) будет не такой, как сам виджет.По столбцам я вижу, что заполнитель может получить ширину от столбца, но в моем случае даже левая / верхняя позиция неверна.Заполнитель находится в верхней части контейнера виджета.
Плюс анимация всегда перемещает виджет в верхний левый угол контейнера виджета.Как будто он думает, что точка вставки или предыдущее местоположение находились в верхнем левом углу, а не там, где вставляется или предыдущее местоположение.
Я знаю, что здесь что-то упущено.Я пытался изменить место прикрепления сортируемого метода, но он ничего не меняет.Буду признателен за любую помощь!
Часть визуализированного HTML:
<div id="widgets" class="span9">
<div class="widget span8">
<div class="widget-head">
<h4>Demo Activity 1</h4>
</div>
<div class="widget-content">
<p>The content...</p>
</div>
<div class="widget-bottom"></div>
</div>
<div class="widget span4">
<div class="widget-head">
<h4>Demo Activity 2</h4>
</div>
<div class="widget-content">
<p>The content...</p>
</div>
<div class="widget-bottom"></div>
</div>
<div class="widget span4">
<div class="widget-head">
<h4>Demo Activity 3</h4>
</div>
<div class="widget-content">
<p>The content...</p>
</div>
<div class="widget-bottom"></div>
</div>
</div>
Базовый заполнитель CSS, так что я действительно могу его увидеть:
.widget-placeholder {
border: 2px dashed #333;
}
КлипJS, который устанавливает сортируемое:
$sortableItems = $('> div', '#widgets');
$sortableItems.find('.widget-head').css({
cursor: 'move'
}).mousedown(function (e) {
$sortableItems.css({width:''});
$(this).parent().css({
width: $(this).parent().width() + 'px'
});
}).mouseup(function () {
if(!$(this).parent().hasClass('dragging')) {
$(this).parent().css({width:''});
} else {
$('#widgets').sortable('disable');
}
});
$('.widget').sortable({
items: $sortableItems,
connectWith: $('#widgets'),
handle: '.widget-head',
containment: $('#widgets'),
revert: 300,
delay: 100,
opacity: 0.8,
placeholder: 'widget-placeholder',
containment: 'document',
forcePlaceholderSize: true,
start: function (e,ui) {
$(ui.helper).addClass('dragging');
},
stop: function (e,ui) {
$(ui.item).css({width:''}).removeClass('dragging');
$('#widgets').sortable('enable');
}
});