Я реализую перетаскиваемый плагин jQuery, а также плагин метаданных, но пытаюсь получить доступ к метаданным из функции обратного вызова Droppable. Я могу получить доступ к метаданным вне перетаскиваемых / сбрасываемых функций, и это прекрасно работает; но когда я вызываю изнутри функцию, я получаю пустой объект - если я предварительно не загружаю метаданные. Позвольте мне объяснить подробнее ... У меня есть следующее:
<div id="NavigationSorting">
<ul class="drgLocation">
<li>
<span>Location 1</span>
<ul class="drgArea">
<li data="{JobAreaID: '1'}">
<div class="dzArea ui-droppable"></div>
<span>Area 1</span>
<ul class="drgTreatment">
<li><span>Treatment 1.1</span></li>
<li><span>Treatment 1.2</span></li>
</ul>
</li>
<li data="{JobAreaID: '2'}" id="test">
<div class="dzArea ui-droppable"></div>
<span>Area 2</span>
<ul class="drgTreatment">
<li><span>Treatment 2.1</span></li>
<li><span>Treatment 2.2</span></li>
</ul>
</li>
</ul>
</li>
</ul>
В блоке document.ready есть следующее:
$('#NavigationSorting .dzArea').droppable({
accept: '.drgArea li',
tolerance: 'touch',
hoverClass: 'droppableArea',
drop: function (e, ui) {
var ul = $(this).parent();
var data2 = $(ui.draggable).metadata({ type: 'attr', name: 'data' });
alert(data2.JobAreaID);
ul.before(ui.draggable);
}
});
$('#NavigationSorting .drgArea>li').draggable({
//handle: ' > dl',
opacity: .8,
addClasses: false,
helper: 'clone',
zIndex: 100
});
Если я перетаскиваю 2-й LI вверх, я получаю пустой объект для данных (JobAreaID не определен). Однако, если я добавлю следующий перед перетаскиваемым / сбрасываемым кодом, он будет работать:
var data = $("#test").metadata({ type: 'attr', name: 'data' });
Это нормально в моем тестовом сценарии, но в производственном процессе я не буду знать все значения идентификаторов (не говоря уже о том, что это кажется пустой тратой). Я подумал о добавлении класса и его использовании в селекторе метаданных, но он получает только данные из первого соответствующего элемента, поэтому в этом случае JobAreaID 2 будет иметь значение null.
Любая помощь будет принята с благодарностью, так как это сводит меня с ума, но я не могу поверить, что это невозможно.
Спасибо!