我正在使用 jQuery sortable + jQuery draggable 将添加和删除图像到幻灯片的页面放在一起。我现在已经设置好了,这样我就可以拖入新屏幕并将它们放入我想要的命名序列中,它会创建我需要的 DOM 元素。
我正在成功扫描页面以查找必要的元素并将它们提交到数组中,但它永远不会拾取新添加的项目。例如,我有以下元素开始:
<h3 data-sequence-title="sequence1">Sequence 1</h3>
<ul class="sortable connectedSortable ui-sortable">
<li data-screen="screen1">Screen 1</li>
<li data-screen="screen2">Screen 2</li>
<li data-screen="screen3">Screen 3</li>
</ul>
...然后我添加一行:
<h3 data-sequence-title="sequence1">Sequence 1</h3>
<ul class="sortable connectedSortable ui-sortable">
<li data-screen="screen1">Screen 1</li>
<li data-screen="screen2">Screen 2</li>
<li data-screen="screen3">Screen 3</li>
<li data-screen="screen4">Screen 4</li>
</ul>
jQuery 只会返回第一个元素,而不是更新的元素。这是我正在使用的js:
$( document.body ).on('click', '.submit', function(){
// Build nested array from DOM elements
var jsonObj = [];
$('.sortable').prev('h3').each(function(){
var obj = {
title: $(this).data("sequence-title"),
Screens: []
};
$(this).next("ul").children('li').each(function() {
obj.Screens.push({
image: $(this).data("screen")
});
});
jsonObj.push(obj);
});
});
添加新 LI 的代码:
// Initialize draggable / droppable functionality
$('.sortable').sortable({
placeholder: 'ui-state-highlight',
revert: true
});
$('.draggable li').draggable({
connectToSortable: '.sortable',
helper: 'clone',
revert: 'invalid'
});
$('.sortable').disableSelection();
我需要返回修改后的 DOM,而不是加载页面时的元素。