Jquery 替换项目<;李>;在静态列表中<;ul>;通过拖动的项目<;李>;来自可排序列表<;ul>;
我正在努力将jQuery的拖放功能与jQuery UI sortable结合起来。我想用拖到HTML列表中的另一个项目(也是一个li标记)替换该项目(li标记) 所以在项目上,而不是列表上必须将其放置在特定位置,而不是添加到列表的末尾我不想附加它。 我拖动的项来自另一个可排序的列表。(我不知道这有没有关系。) 这是我的代码: HTML:Jquery 替换项目<;李>;在静态列表中<;ul>;通过拖动的项目<;李>;来自可排序列表<;ul>;,jquery,drag-and-drop,replace,jquery-ui-sortable,Jquery,Drag And Drop,Replace,Jquery Ui Sortable,我正在努力将jQuery的拖放功能与jQuery UI sortable结合起来。我想用拖到HTML列表中的另一个项目(也是一个li标记)替换该项目(li标记) 所以在项目上,而不是列表上必须将其放置在特定位置,而不是添加到列表的末尾我不想附加它。 我拖动的项来自另一个可排序的列表。(我不知道这有没有关系。) 这是我的代码: HTML: <div id="source" class="listBlock"> <ul class="Sortable
<div id="source" class="listBlock">
<ul class="Sortable">
<li class="ui-state-default" id="item1">Item 1</li>
<li class="ui-state-default" id="item2">Item 2</li>
<li class="ui-state-default" id="item3">Item 3</li>
<li class="ui-state-default" id="item4">Item 4</li>
</ul>
</div>
<div id="target" class="listBlock">
<ul class="DropTrue">
<li class="ui-state-default slot" id="slot1">SLOT 1</li>
<li class="ui-state-default slot" id="slot2">SLOT 2</li>
<li class="ui-state-default slot" id="slot3">SLOT 3</li>
<li class="ui-state-default slot" id="slot4">SLOT 4</li>
</ul>
</div>
你能帮我吗,最好是用一些示例代码?非常感谢
[2014年12月3日编辑]
完整的工作实施:
var maxFieldLength = 30;
$(document).ready(function () {
$(".detailsBlock").find("tbody").show();
$(".showDetails").addClass("active");
InitializeHeaderMap();
$('#ResetButton').click(function () {
$('span.headerText img').each(function (index) {
$(this).click();
});
});
$("ul.SourceList li").draggable({
opacity: 0.6,
revert: true
});
$("ul.TargetList li").droppable({
drop: function (event, ui) {
PlaceInSlot(ui.draggable, $(this));
}
});
});
function OnNextClick() {
CreateHeaderMap();
return true;
}
function OnPreviousClick() {
CreateHeaderMap();
return true;
}
function InitializeHeaderMap() {
var map = [];
var headerMap = $('input[name=HeaderMap]').val();
if ((headerMap !== null) && (headerMap !== undefined) && (headerMap.length > 0)) {
try {
map = JSON.parse(headerMap);
} catch (err) {
map = '';
}
}
$.each(map, function (key, mapObject) {
if (mapObject.HeaderIndex != -1) {
var header = $("ul.SourceList li:icontains(" + mapObject.Header + ")");
// Only place in slot when the header text is found
if (header.text().length > 0) {
var slot = $("ul.TargetList li[id=" + mapObject.Item + "]");
PlaceInSlot(header, slot);
}
}
});
}
function CreateHeaderMap() {
var map = [];
$("li.item").each(function () {
var obj = {};
obj['Item'] = $(this).attr('id');
var position = $(this).find('span.headerText input').val();
if ((position === 'undefined') || (position === null)) {
position = -1;
}
obj['HeaderIndex'] = position;
if (position !== 'undefined') {
obj['Header'] = $(this).children('span.headerText').text().trim();
} else {
obj['Header'] = '';
}
map.push(obj);
});
$('input[name=HeaderMap]').val(JSON.stringify(map));
}
function PlaceInSlot(element, slot) {
$(slot).children("span.slotText").hide();
var revertImg = '<img name="image" src="https://dl.dropbox.com/s/z4cehkuhv2mj502/Prullie_1_12.png" width="12" height="12" />';
$(slot).children("span.headerText").html($(element).html()).append(revertImg);
$(slot).parent().addClass("ui-state-default");
$(slot).removeClass("validation-error");
$(slot).droppable({
disabled: true
});
var importRowFile = $(element).val();
$(slot).attr("value", importRowFile);
$(element).hide();
$(slot).find("span.headerText img").click(function () {
$(element).show();
$(slot).children("span.slotText").show();
$(slot).children("span.headerText").html('');
$(slot).addClass("slot");
$(slot).droppable({
disabled: false
});
$(slot).off('click');
});
}
var maxFieldLength=30;
$(文档).ready(函数(){
$(“.detailsBlock”).find(“tbody”).show();
$(“.showDetails”).addClass(“活动”);
初始化headermap();
$(“#重置按钮”)。单击(函数(){
$('span.headerText img')。每个(函数(索引){
$(此选项)。单击();
});
});
$(“ul.SourceList li”).draggable({
不透明度:0.6,
回复:真
});
$(“ul.TargetList li”)。可拖放({
drop:函数(事件、用户界面){
PlaceInSlot(ui.draggable,$(this));
}
});
});
函数OnNextClick(){
CreateHeaderMap();
返回true;
}
函数OnPreviousClick(){
CreateHeaderMap();
返回true;
}
函数初始化HeaderMap(){
var-map=[];
var headerMap=$('input[name=headerMap]')。val();
如果((headerMap!==null)&&(headerMap!==未定义)&&(headerMap.length>0)){
试一试{
map=JSON.parse(headerMap);
}捕捉(错误){
map='';
}
}
$.each(映射、函数(键、映射对象){
如果(mapObject.HeaderIndex!=-1){
var header=$(“ul.SourceList li:icontains(“+mapObject.header+”));
//仅在找到标题文本时放入插槽
if(header.text().length>0){
var slot=$(“ul.TargetList li[id=“+mapObject.Item+”]);
PlaceInSlot(收割台、槽);
}
}
});
}
函数CreateHeaderMap(){
var-map=[];
$(“li.item”)。每个(函数(){
var obj={};
obj['Item']=$(this.attr('id');
var position=$(this.find('span.headerText input').val();
如果((位置=='undefined')| |(位置===null)){
位置=-1;
}
obj['HeaderIndex']=位置;
如果(位置!=“未定义”){
obj['Header']=$(this.children('span.headerText').text().trim();
}否则{
obj['Header']='';
}
地图推送(obj);
});
$('input[name=HeaderMap]').val(JSON.stringify(map));
}
功能位置插槽(元件、插槽){
$(slot.children(“span.slotText”).hide();
var revertImg='';
$(slot.children(“span.headerText”).html($(element.html()).append(revertImg);
$(slot.parent().addClass(“ui状态默认值”);
$(插槽).removeClass(“验证错误”);
$(插槽)。可拖放({
残疾人士:对
});
var importRowFile=$(元素).val();
$(插槽).attr(“值”,导入文件);
$(元素).hide();
$(插槽)。查找(“span.headerText img”)。单击(函数(){
$(元素).show();
$(slot.children(“span.slotText”).show();
$(slot.children(“span.headerText”).html(“”);
$(插槽).addClass(“插槽”);
$(插槽)。可拖放({
禁用:false
});
$(插槽).off('click');
});
}
请参阅fiddle:我相信可以通过其类名(例如“ui项可拖放”)将每个单独的项设置为“可拖放”,然后在拖放事件上执行交换 JQuery示例使用它,因此包含的项是可拖放的容器,但是没有理由不能将其更改为所有包含的项 您不会受到任何性能影响,因为您只是声明该类是可删除的,而不是目标容器中的每一项
var maxFieldLength = 30;
$(document).ready(function () {
$(".detailsBlock").find("tbody").show();
$(".showDetails").addClass("active");
InitializeHeaderMap();
$('#ResetButton').click(function () {
$('span.headerText img').each(function (index) {
$(this).click();
});
});
$("ul.SourceList li").draggable({
opacity: 0.6,
revert: true
});
$("ul.TargetList li").droppable({
drop: function (event, ui) {
PlaceInSlot(ui.draggable, $(this));
}
});
});
function OnNextClick() {
CreateHeaderMap();
return true;
}
function OnPreviousClick() {
CreateHeaderMap();
return true;
}
function InitializeHeaderMap() {
var map = [];
var headerMap = $('input[name=HeaderMap]').val();
if ((headerMap !== null) && (headerMap !== undefined) && (headerMap.length > 0)) {
try {
map = JSON.parse(headerMap);
} catch (err) {
map = '';
}
}
$.each(map, function (key, mapObject) {
if (mapObject.HeaderIndex != -1) {
var header = $("ul.SourceList li:icontains(" + mapObject.Header + ")");
// Only place in slot when the header text is found
if (header.text().length > 0) {
var slot = $("ul.TargetList li[id=" + mapObject.Item + "]");
PlaceInSlot(header, slot);
}
}
});
}
function CreateHeaderMap() {
var map = [];
$("li.item").each(function () {
var obj = {};
obj['Item'] = $(this).attr('id');
var position = $(this).find('span.headerText input').val();
if ((position === 'undefined') || (position === null)) {
position = -1;
}
obj['HeaderIndex'] = position;
if (position !== 'undefined') {
obj['Header'] = $(this).children('span.headerText').text().trim();
} else {
obj['Header'] = '';
}
map.push(obj);
});
$('input[name=HeaderMap]').val(JSON.stringify(map));
}
function PlaceInSlot(element, slot) {
$(slot).children("span.slotText").hide();
var revertImg = '<img name="image" src="https://dl.dropbox.com/s/z4cehkuhv2mj502/Prullie_1_12.png" width="12" height="12" />';
$(slot).children("span.headerText").html($(element).html()).append(revertImg);
$(slot).parent().addClass("ui-state-default");
$(slot).removeClass("validation-error");
$(slot).droppable({
disabled: true
});
var importRowFile = $(element).val();
$(slot).attr("value", importRowFile);
$(element).hide();
$(slot).find("span.headerText img").click(function () {
$(element).show();
$(slot).children("span.slotText").show();
$(slot).children("span.headerText").html('');
$(slot).addClass("slot");
$(slot).droppable({
disabled: false
});
$(slot).off('click');
});
}