jQuery-UI sortable: элементы перетаскиваются при использовании нескольких сортируемых таблиц
У меня есть ряд вложенных сортируемых элементов, демонстрирующих некоторое странное поведение с z-индексами.
в основном, в некоторых случаях элементы перетаскиваются в родительские контейнеры. Он появляется только после сортировки родительского элемента.
также похоже, что проблема позади только на элементах дальше по списку. Поэтому я могу перетащить в" более высокую " сортировку, но перетаскивание в "более низкую" сортировку и элемент перетаскивания внезапно позади.
детали:
дали сортируемый список A каждый элемент по очереди содержит список сортировки connect B (как и в списках B в каждом A все подключены)
после сортировки элемента в A элементы, перетаскиваемые из сортируемого живущего в этом списке, теперь находятся позади других элементов A.
Я играл с различными параметрами z-индекса через CSS и Jquery безрезультатно.
3 ответов
Я нашел обходной путь для этой проблемы.
при определении sortables, использовать:
appendTo: "body"
helper: "clone"
это полностью разбивает перетаскиваемые элементы из вложенного сортируемого z-порядка и решает проблему.
Я знаю, что это старая нить, но у меня было немного другое решение. После apending его тела я потеряла все свойства CSS. Мое решение создает мой собственный вспомогательный объект.
Javascript:
appendTo: 'body',
helper: function(event, $item){
var $helper = $('<ul class = "styled" id="' + event.originalEvent.target.id + '"><li>' + event.originalEvent.target.innerText + '</li></ul>');
return $helper;
},
в CSS
.styled li{
margin-left: 0px;
}
.styled{
cursor:move;
text-align:left;
margin-left: 0px;
padding: 5px;
font-size: 1.2em;
width: 390px;
border: 1px solid lightGrey;
background: #E6E6E6 url(https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-
font-weight: normal;
color: #555;
list-style-type: none;
}
довольно поздний ответ, но для тех, кто следует в будущем я обнаружил, что если вы перемещаете несколько элементов, вы можете переопределить вроде и остановка функции для установки Z-индекса элементов. Например:
sort: function(event, ui) {
$(this).css('z-index', 1000);
},
stop: function(event, ui) {
$(this).css('z-index', 0);
}
это обновит свойство z-index текущего элемента, гарантируя, что он всегда находится сверху. Поэтому эту идею можно распространить на сгруппированные элементы. Представьте себе:
sort: function(event, ui) {
$('.element-group').each(function(index) {
$(this).css('z-index', 1000);
});
},
stop: function(event, ui) {
$('.element-group').each(function(index) {
$(this).css('z-index', 0);
});
}