我开始学习如何使用jQuery并创建一个小型项目管理应用程序。在应用程序中,您可以从列表中拖动员工并将其放到不同的项目中以将其分配给它。
在每个项目div中都是一个ul,我希望将员工附加到其中。目前的问题是我可以将员工添加到div中,但他们会在ul之外添加。我已经尝试设置一个变量来从项目div中获取元素id并将其分配给变量。然后,该变量将在appendTo()调用中连接,以将该项添加到右侧列表中。这就是我遇到问题的地方。变量保持返回[object Object]。
提前感谢您的帮助。这是JSFiddle的链接。
HTML
<ul class='employee-list'>
<li class='employee'>Ian</li>
<li class='employee'>Danny</li>
</ul>
<div id='task-list'>
<div id="task-1234" class='task'>
<h3>Design new email</h3>
<ul id="task-1234-employees" class='tasked-employees'></ul>
</div>
<div id ="task-4321" class='task'>
<h3>Update Cart Code</h3>
<ul id ="task-4321-employees" class='tasked-employees'></ul>
</div>
</div>
的Jscript
$(document).ready(function () {
$(function () {
var $taskID = $('.task').mouseover(function() {return this.id;});
$(".employee").draggable({
revert: 'invalid'
}, {
snap: '.task-slot',
snapMode: 'inner'
}, {
appendTo: 'body',
helper: 'clone'
});
$('.task').droppable({
activeClass: "ui-state-default",
hoverClass: "ui-state-hover",
accept: ":not(.ui-sortable-helper)",
drop: function (event, ui) {
$(this).find(".placeholder").remove();
$("<li class='task-slot'></li>").text(ui.draggable.text()).appendTo("#" + $taskID +"-employees");
}
});
});
});
答案 0 :(得分:1)
基本上,您首先不需要mouse over
。
drop
方法的 ui 和事件参数中提供了所有必需的信息。
试试这个
$(document).ready(function () {
$(function () {
$(".employee").draggable({
revert: 'invalid'
}, {
snap: '.task-slot',
snapMode: 'inner'
}, {
appendTo: 'body',
helper: 'clone'
});
$('.task').droppable({
activeClass: "ui-state-default",
hoverClass: "ui-state-hover",
accept: ":not(.ui-sortable-helper)",
drop: function (event, ui) {
var employee = ui.draggable.text();
$(this).find(".placeholder").remove();
$("<li class='task-slot'></li>").text(employee)
.appendTo($(event.target).find('ul.tasked-employees'));
}
});
});
});
<强> Check Fiddle 强>