![](/img/trans.png)
[英]ngx-bootstrap bs-sortable shows prevously dragged item when a menu item is dragged to the sortable section
[英]Item of sortable element loses its CSS styles when it is being dragged? (If appendTo: 'body')
我有一个可排序的项目列表,它根据用户在搜索框中输入的内容返回结果。 结果总是溢出,在这里我使用以下css:
#list { overflow-x: visible; overflow-y: hidden; }
这允许我只有一个垂直滚动条。 然后,我将列表中的各个li拖到可放置的区域。 使用下面的JQuery将可排序功能添加到列表中:
$("#list").sortable({
connectWith: ".connectedSortable",
helper: 'clone',
appendTo: 'body',
zIndex: 999
});
我使用appendTo:'body'的原因是为了确保被拖动的项目位于所有内容之上,并且在被拖动时不会在列表的其他项目下。 但是,每当我从列表中拖动任何项目时,项目中的DIV都将使其CSS样式消失。
我理解这是因为当拖动项目时,它被附加到'body' ,因此没有任何父项继承原始CSS样式。
我的问题是如何将拖动的项目设置回其原始样式,以确保即使我拖动/不拖动它也保持不变? 通过活动?
编辑:
找到了css乱搞的原因。 它是在两个div之间抛出的随机br ,导致在拖动项目并将其附加到正文时对其进行不同的解释。
您有两种方法可以对问题进行排序。 一个是使用该函数创建自己的帮助器。 通过这种方式,您可以以任何方式设置样式,将其包装在元素中,添加类等。
以下演示显示了差异,顶部的一个工作,底部的一个工作。 http://jsfiddle.net/hPEAb/
$('ul').sortable({
appendTo: 'body',
helper: function(event,$item){
var $helper = $('<ul></ul>').addClass('styled');
return $helper.append($item.clone());
}
});
另一种选择是不使用append:'body'
,而是使用zIndex。 你的zIndex:999
显然没有效果,因为默认值是1000. :) zIndex
的问题是它只对兄弟姐妹,同一父母中的元素很重要。 因此,如果您的表单上有另一个可排序的zIndex
比当前可排序的更大,则无论您当前拖动的项目的zIndex
如何,其项目都可以轻松地位于您拖动的项目之上。
解决方案是在拖动开始时将整个可排序项置于顶部,并在停止时将其恢复:
$('#mySortable').sortable({
start: function(){
// Push sortable to top
$(this).css('zIndex', 999);
},
stop: function(){
// Reset zIndex
$(this).css('zIndex', 0);
}
});
如果原始值很重要,您甚至可以使用.data()
保存原始zIndex
并在之后检索它。
谢谢DarthJDG。 我知道这个帖子有点旧,但我希望能帮助那些遇到同样问题的人。
我不得不稍微编辑你的解决方案,因为在将项目附加到帮助程序时样式已关闭。 我最终只是重新创建了list元素。 以防其他人遇到同样的问题我做了。
我将其添加到我创建可排序区域。
我从可排序的文本中取出文本并创建了一个新的列表项,并将其作为文本。
使用Javascript:
appendTo: 'body',
helper: function(event,$item){
console.log(event);
var $helper = $('<ul class = "styled" id="' + event.originalEvent.target.id + '"><li>' + event.originalEvent.target.innerText + '</li></ul>');
return $helper;
}
然后,我可以为可拖动对象添加自定义样式,包括没有问题的自定义文本。 我最终使用的样式是JQuery Smoothness的样式。
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-x;
font-weight: normal;
color: #555;
list-style-type: none;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.