- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个列表,我正在尝试创建一个系统,在该系统中,人们可以将元素从该列表拖动到 div
(而不是其他列表),反之亦然。下面是我的代码:
$(function() {
$( "ul, li" ).disableSelection();
$( "li" ).draggable({
revert:"invalid"});
$( "#droppable" ).droppable({
drop: function( event, ui ) {ui.draggable.remove()}
});
});
#droppable
{
height:150px;
width:750px;
background:rgba(0,200,0,0.3);
display:inline-block;
}
ul
{
border: 1px solid #eee;
width: 142px;
min-height:20px;
height:142px;
list-style-type: none;
margin: 0;
overflow:hidden;
overflow-y:scroll;
padding: 5px 0 0 0;
float: right;
margin-right: 10px;
}
ul li
{
color:red;
border : 1px solid #eee;
margin: 0 5px 5px 5px;
padding: 5px;
font-size: 1.2em;
width: 120px;
}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.2/jquery-ui.min.js"></script>
<div id="droppable"></div>
<br>
<ul>
<li id="drag">Item1</li>
<li id="drag">Item2</li>
<li id="drag">Item3</li>
<li id="drag">Item4</li>
<li id="drag">Item5</li>
</ul>
尝试运行代码并拖放列表项,无论是开箱即用还是开箱即用。你会明白我的意思。
问题是,当我将元素拖出 List (ul
) 区域时,它不会出现,如果我将它放到一个不可放置的区域,它会恢复到应有的列表.如果我将它放在 #droppable
dic 中,它就会从列表中删除但仍然不可见。
我尝试将 ul
和 li
的 z-index
设置为 2
和 #droppable
到 1
但这也没有帮助。
附言。如果该元素处于拖动状态并被拖出 ul
区域,那么它也会消失。它仅在 ul
区域可见。任何帮助将不胜感激。
最佳答案
这段代码有几个问题-
Permitted parent elements An <ul>, <ol> or <menu> element. Though not a non-conforming usage, the obsolete <dir> may also be a parent.
来源:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li
除非有充分的理由不让它成为另一个列表,否则我建议使用列表元素并简单地对其进行样式设置以删除元素符号以进行您需要的任何其他视觉/设计更改。
HTML 的无效使用会导致浏览器之间呈现不同,应该避免。
如果您必须将它移动到 div 元素,那么我建议从列表元素复制内部文本或 HTML 并将其附加到 div - 可能在合适的 block 容器中,例如段落 (p)。
这种方法可以解决您的溢出问题,否则您将需要从父列表中删除 overflow: hidden 样式。
为了保持原始代码的精神,我在下面的代码片段中解决了这些问题 -
$(function() {
$( "ul, li" ).disableSelection();
$( "li" ).draggable({
helper: "clone",
revert:"invalid"
});
$( "#droppable" ).droppable({
drop: function( event, ui ) {
var dragText = ui.draggable.text();
$(event.target).append($('<p>').text(dragText));
ui.draggable.remove();
event.preventDefault();
}
});
});
#droppable
{
height:150px;
width:750px;
background:rgba(0,200,0,0.3);
display:inline-block;
}
ul
{
border: 1px solid #eee;
width: 142px;
min-height:20px;
height:142px;
list-style-type: none;
margin: 0;
overflow:hidden;
overflow-y:scroll;
padding: 5px 0 0 0;
float: right;
margin-right: 10px;
}
ul li
{
color:red;
border : 1px solid #eee;
margin: 0 5px 5px 5px;
padding: 5px;
font-size: 1.2em;
width: 120px;
}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.2/jquery-ui.min.js"></script>
<div id="droppable"></div>
<br>
<ul>
<li id="drag">Item1</li>
<li id="drag">Item2</li>
<li id="drag">Item3</li>
<li id="drag">Item4</li>
<li id="drag">Item5</li>
</ul>
关于jquery - Item (li) 拖出 List (ul) 区域时消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28527833/
我有一个包含许多项目的 NSTableView。我想实现从 NSTableView 的内部 拖动到 外部 以删除拖动的项目。 (有点像 Safari 如何“噗”掉书签。) NSTableView 已经
我有一个列表,我正在尝试创建一个系统,在该系统中,人们可以将元素从该列表拖动到 div(而不是其他列表),反之亦然。下面是我的代码: $(function() { $( "ul, li" ).disa
我是一名优秀的程序员,十分优秀!