0
嘿真棒問題的解決者,這是一個問題,我需要幫助:JQuery的排序轉變克隆與輸出對象
我有我使用JQuery可排序與排序多個列表,然後輸出的對象更改列表。我需要幫助的一個功能是從一個列表向另一個列表移動副本。這會將原始文件保留在列表中,然後將該克隆元素放入新列表中,並放在該列表中。
獲得這樣的遠遠不是太多的問題。但是當我創建輸出對象時,它很少與我們在屏幕上看到的內容匹配。列表項目的順序不正確,有時還會有克隆列表項目的額外副本。
<ul class="sortable" data-name="List 1">
<p>List 1</p>
<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>
<li class="ui-state-default">Item 6</li>
<li class="ui-state-default">Item 7</li>
</ul>
<ul class="sortable" data-name="List 2">
<p>List 2</p>
<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>
<li class="ui-state-default">Item 6</li>
<li class="ui-state-default">Item 7</li>
</ul>
<p style="clear: both">Output Object</p>
<div id="output"></div>
下面是使用Javascript/jQuery的:
$(function() {
$(".sortable").sortable({
connectWith: ".sortable",
activate: function (event, ui) {
if (event.shiftKey == true) {
$('body').css('cursor', 'copy');
}
},
stop: function(event, ui) {
if (event.shiftKey == true) {
return false;
}
},
receive: function(event, ui) {
if (event.shiftKey == true) {
ui.item.clone().appendTo($(this));
}
},
update: function(event, ui) {
sendList(ui.item.closest('ul'));
},
});<!-- end Jquery Sortable -->
});<!-- end function -->
// function for output
function sendList(list) {
var listArray = [];
var ulObject={};
// iterate through the list and push html into array
list.find('li').each(function(index, element) {
listArray.push($(this).html());
});
// update object
ulObject = {
"List Name" : list.attr('data-name'),
"List Items" : listArray
}
console.log(ulObject);
$('#output').html("").append(JSON.stringify(ulObject, "", "\r\n"));
}
而對於審美的煩躁:CSS的:
.sortable { list-style-type: none; margin: 1em; padding: 0; width: 30%; float: left;}
.sortable li { margin: 3px; padding: 0.4em; height: 12px; }
#output {clear:both; border: thin solid black; padding: 1em; margin: 1em; width: 60%; min-height: 250px}
p {clear:both; margin-left: 1em;}
當我在jsfiddle上玩你的代碼時,一切正常,你能詳細說明你爲了產生你所說的錯誤而採取的步驟嗎?謝謝。 –
問題在於將一個列表項拖移到下一個列表,並且輸出正確。在原始的小提琴中,目的地列表將會在拖動項目的地方出現錯誤,並且輸出字段會在三個地方顯示該項目。 –