- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个计划表,旁边有一个任务列表,分为 3 类。此列表中的任何项目都需要能够克隆并附加到一周 7 天中的一天或多天。
因此,将其拖动到任何一天,都需要克隆它并在拖动到的那一天显示它。到目前为止,我还没有找到一种方法来指示该项目可以追加到 sort4 到 sort10。有没有办法找出您将鼠标悬停在上面的目标是什么,以用变量填充appendTo()?
我当前的代码仅允许将项目克隆到 7 列中的一列。
我的代码:
Function sortable(){
// the 3 categories of which each item needs to be cloned
$( "#sort1, #sort2, #sort3" ).sortable({
connectWith: ".connectedSortable",
remove: function(event, ui) {
ui.item.clone().appendTo('#sort4');
$(this).sortable('cancel');
}
}).disableSelection();
// on each day, you can drag and drop to any other
day which needs to move the task
$( "#sort4, #sort5, #sort6, #sort7, #sort8, #sort9, #sort10" ).sortable({
connectWith: ".connectedSortable"
}).disableSelection();
};
我确实设法找到了一些可行的解决方案,但我不确定这是最有效的方法。根据光标位置,我可以决定选择器,从而可以按照我需要的方式对其进行排序。
function sortable() {
$("#sort1, #sort2, #sort3").sortable({
connectWith: ".connectedSortable",
remove: function (event, ui) {
let pos;
let scroll = document.querySelector('.week_planner--container').scrollLeft;
let cursor = (event.pageX - $('.week_planner--container').offset().left) + scroll;
if (cursor >= 0 && cursor <= 170) {
pos = '#sort4';
} else if (cursor >= 171 && cursor <= 340) {
pos = '#sort5';
} else if (cursor >= 341 && cursor <= 510) {
pos = '#sort6';
} else if (cursor >= 511 && cursor <= 680) {
pos = '#sort7';
} else if (cursor >= 681 && cursor <= 850) {
pos = '#sort8';
} else if (cursor >= 851 && cursor <= 1020) {
pos = '#sort9';
} else if (cursor >= 1021 && cursor <= 1190) {
pos = '#sort10';
}
ui.item.clone().appendTo(pos);
$(this).sortable('cancel');
}
}).disableSelection();
$("#sort4, #sort5, #sort6, #sort7, #sort8, #sort9, #sort10").sortable({
connectWith: ".connectedSortable"
}).disableSelection();
};
最佳答案
jQuery 的可排序提供了一些您可以利用的事件。我存储了我们要拖动的列表及其位置,以便我们可以确定拖动后是否应该克隆。
$(function()
{
var $movingFrom = null;
var index = null;
$(".connectedSortable").sortable(
{
connectWith: ".connectedSortable",
start: function(event, ui)
{
// Log which list we're dragging from and where in the list the item currently resides.
$movingFrom = ui.item.parent();
index = ui.item.index();
},
receive: function(event, ui) // This is called when we finish the drag and things have moved.
{
if (event.target.id == "sortable1")
{
// Prevent 1st list receiving items from elsewhere
ui.sender.sortable("cancel");
}
else
{
if ($movingFrom.attr("id") == "sortable1")
{
// If we're moving from the 1st list...
var $insertBefore = $("#sortable1 li").get(index);
if ($insertBefore !== undefined)
{
// Clone original 1st list item
ui.item.clone().insertBefore($insertBefore);
}
else
{
// Must have come from the end of the list...
$("#sortable1").append(ui.item.clone());
}
}
}
}
}).disableSelection();
});
#sortable1,
#sortable2,
#sortable3 {
list-style-type: none;
margin: 0;
padding: 0;
float: left;
margin-right: 10px;
}
#sortable1 li,
#sortable2 li,
#sortable3 li
{
font-family:Calibri;
border: solid 1px black;
background-color:white;
margin: 0 5px 5px 5px;
padding: 5px;
font-size: 1.2em;
width: 120px;
cursor: pointer;
}
<script src="///cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="///cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.js"></script>
<meta charset="utf-8">
<div class="demo">
<ul id="sortable1" class="connectedSortable">
<li class="ui-state-default">Item 1</li>
<li class="ui-state-default">Item 2</li>
<li class="ui-state-default">Item 3</li>
<li class="ui-state-default">Item 4</li>
<li class="ui-state-default">Item 5</li>
</ul>
<ul id="sortable2" class="connectedSortable">
<li class="ui-state-highlight">Item 1</li>
<li class="ui-state-highlight">Item 2</li>
<li class="ui-state-highlight">Item 3</li>
<li class="ui-state-highlight">Item 4</li>
<li class="ui-state-highlight">Item 5</li>
</ul>
<ul id="sortable3" class="connectedSortable">
<li class="ui-state-highlight">Item 1</li>
<li class="ui-state-highlight">Item 2</li>
<li class="ui-state-highlight">Item 3</li>
<li class="ui-state-highlight">Item 4</li>
<li class="ui-state-highlight">Item 5</li>
</ul>
</div>
关于javascript - Jquery 可排序 : clone + appendTo more than one possible target,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57431564/
什么是 vb6 或 java 中的对象克隆?我们在什么情况下使用克隆?克隆对象是什么意思?谁能用例子告诉我。 最佳答案 克隆实际上是将对象数据复制到新对象中。 此示例不克隆数据: Foo p = ne
ArrayList a=new ArrayList(); a.add(5); ArrayList b=(ArrayList)a.clone(); a.add(6); System.out.printl
这个问题在这里已经有了答案: Why does cloned() allow this function to compile (1 个回答) 关闭 3 个月前。 假设我们有一个可以克隆的某种类型的
我有这样的代码,我需要在其中将某些内容插入到两个单独的 HashMap 中。我只想要实现克隆的通用类型。 use std::collections::HashMap; use std::clone::
这段代码(also on play) use std::sync::Arc; struct Foo { x: isize, // Something complex in actual cod
我有按钮 Drag to insert h1 tag 当你拖动它时,我希望按钮留在原来的位置,助手是 Example在你放下它的地方,你会放下h1没有任何可拖动或 jQuery UI 样式的标记。 所
覆盖 clone 方法,而不实现 Cloneable 接口(interface)并且不调用 super.clone() 是一个好习惯。这样,就不会抛出 CloneNotSupportedExcepti
public abstract class Shape implements Cloneable { private String id; protected String type;
克隆远程仓库后,它不会通过 -a 选项显示任何远程分支。可能是什么问题呢?如何调试呢?在此片段中,未显示两个远程分支: $ git clone --depth 1 git://git.savannah
我看过这个答案for a git clone error ,建议不要克隆整个 repo,而是只克隆最新的提交,然后使用 unshallow 获取其余的提交。 考虑以下两个命令 1. git clone
当在网上搜索如何以多态方式深层复制对象的可能性时,我发现了 solution声称可以使用 clone() 方法解决许多问题,例如无法克隆 final 字段。该解决方案结合了在 clone() 实现中使
我正在尝试创建一个动态表单来向业务合作伙伴展示。 目标是能够在单击按钮时根据需要添加选择元素。但是,当它被点击时,它会复制模板两次,而不是一次。 这里只是我尝试过的代码的一些变体和 here is t
我知道实现 Object#clone() 的约定表明您应该调用 super.clone() 来获取复制的对象。 但我只是想知道如果我不这样做的话会有什么后果。让我们假设这个例子: class Some
我所说的示例:http://jsfiddle.net/bsnxp/1/ 如果你检查源 .show().clone() display 是 inline-block (它应该是什么)并且 .clone(
我正在编写代码来创建对象、克隆对象,然后比较两者。 所讨论的对象 Octagon 是对象 GeometricObject 的扩展 public class Octagon extends Geomet
我看到clone()在django代码中被广泛使用 queryset.query.clone() queryset.clone() 它的用途是什么?我应该模仿查询集或管理器方法中的行为吗? 最佳答案
我尝试导入 git project进入 eclipse 。手册告诉我在控制台中使用此命令: git clone http://git-wip-us.apache.org/repos/asf/mina-
我正在使用 jquery .clone(),它工作正常。但是我的问题是,当我克隆我的输入字段时,它也会克隆前一个字段的值。我不想克隆该值。我该如何克服这个问题? 这是我的代码 function add
在 this SO thread 中,结果表明,在制作项目副本方面,切片比任何方法都快。 使用: list1 = ['foo','bar'] copy1 = list1 * 1 list1.pop()
我有一个自动脚本可以解析服务器并克隆其中一个文件夹中的所有存储库。它所做的伪代码是: for each repo_name if a folder named like repo_name exi
我是一名优秀的程序员,十分优秀!