如何使用可拖动和可选择的JQuery拖动一个或多个项目到一个元素
How to drag one or more items to an element using both Draggable and Selectable JQuery
我想知道如何将一个或多个项目(在我的情况下,通过他们的头像照片的个人记录)拖到目标(在我的情况下,一个城市列表),然后更新数据库的拖动项目与项目的详细信息,他们被拖到。
目前我对单个项目使用此功能。
我有一个侧边栏的位置列表,我从数据库检索与EntityFramework:
<ul>
<li class="droppable">
<span>Sydney</span>
</li>
<li class="droppable">
<span>Brisbane</span>
</li>
<li class="droppable">
<span>Melbourne</span>
</li>
</ul>
在我的主窗口,我有一个网格的人的图像和我使用Jquery UI可选的,使这些被选中:
<ul class="people-list" id="selectable">
@foreach (var item in Model.People)
{
<li>
<img src="@item.Photo" style="width:100%" class="img-polaroid" />
</li>
}
</ul>
$(function () {
$("#selectable").selectable({
selected: function (event, ui) {
if ($(ui.selected).hasClass('click-selected')) {
$(ui.selected).removeClass('ui-selected click-selected');
} else {
$(ui.selected).addClass('click-selected');
}
},
unselected: function (event, ui) {
$(ui.unselected).removeClass('click-selected');
}
});
});
我想做的是,一旦用户选择了一个或多个人,他们就可以将选中的人拖到其中一个位置,然后更新数据库。
因此,如果用户将PersonID 4,5和9拖动到'Sydney',那么我需要异步更新数据库来执行此操作。
我已经添加了JQuery Draggable和dropable,我可以将个人拖动到其中一个位置,然后更新数据库,但是我不能让它与selectable一起工作,允许多个项目被选中。
$(function () {
$(".img-polaroid").draggable({
containment: "document",
helper: 'clone',
opacity: 0.70,
zIndex: 10000,
});
$(".droppable").droppable({
hoverClass: "ui-state-hover",
tolerance: "pointer",
drop: function (event, ui) {
$.ajax({
type: "POST",
url: '/Person/UpdateLocations/' + $(this).attr("id") + '|' + $(ui.draggable).attr("id"),
success: function (data) {
$('.draggable').draggable('destroy');
$('#successMsg').empty();
$('#successMsg').append(data);
$('#successDiv').show();
$('.draggable').draggable({ revert: true });
}
});
}
});
});
我发现。selectable()和。draggable()不能在同一个元素上工作。我的建议是创建你自己的多选择行为。
在HTML元素中嵌入值(id)
将城市和人员的id作为值相应地嵌入到HTML元素中,例如:<li class="droppable" data-val="sydney"><span>Sydney</span> </li>
和<img src="" class="img-polaroid" data-val="4"/>
。
模仿多选
每个被选中的元素将被标记为特定的类,在selectedClass = "ui-selected"
中定义。这个类将通过单击事件来切换。一个元素可能没有在拖动事件上被选中,因此我们需要在draggable.start
上添加selectedClass
。
.draggable
只适用于单个拖动元素(CMIIW),因此我们通过改变元素的top
和left
属性来移动选定的元素。设置#selectable
元素的position=relative
需要在droppable.drop
回调上完成的操作:准备数据并执行AJAX请求。如果AJAX请求成功,可选择元素将被删除并更新消息。如果AJAX请求失败,可选元素将被放回到原来的位置。
请看下面的例子:http://jsfiddle.net/marson/zSCAb/131/。
- 我怎么能把它做成这样一个图像就不能拖动了
- 将SVG元素拖动到另一个SVG元素上
- 草皮缓冲区和一个可拖动的标记
- 如何在D3中添加一个强制拖动事件,并使节点停留在我离开它的地方
- 当我在另一个画布上同时拖动另一个图像时,如何移动图像
- 使用jQuery UI制作一个可拖动的MathML方程
- 可拖动元素在悬停在另一个'It’s draggable
- 如何禁用一个可拖动的,即使掉到了错误的可拖动中
- 当一个元素被拖动到另一个容器并被捕捉到该容器时,如何强制jquery将其居中
- 是否有一个JS库可以让我在网格中制作可拖动和可调整大小的磁贴,就像在iPhoto Journal中一样
- closure-library在窗格之间拖动一个goog.fx.DragListGroup item
- “可拖动不是函数”,当在另一个函数中时
- 为什么我的 UI/可拖动“创建”事件被传递一个空的“ui”对象
- 用鼠标单击并拖动绘制一个矩形 - JavaScript
- 三.js约束对象拖动到另一个对象的表面
- 如何创建一个“;收藏夹栏”;通过将表格元素拖动到下拉菜单中
- html5:将tr拖动到另一个表中
- 如何在拖动另一个元素时在鼠标光标下获取元素
- 如何存储拖动&将项目放入cookie,然后在另一个页面中检索
- 两个标记,一个固定,一个拖动