Я не знаю, решит ли это вашу проблему, но по крайней мере это немного уменьшит размер вашей страницы: вместо того, чтобы повторять скрипт для каждой итерации цикла, переместите его за пределы foreachs и добавьтекласс для div, который вы хотите сделать перетаскиваемым.Так что-то вроде:
<div class="yourclass" data-yourid="<?= $row->IID ?>" id="catdraggable<?= $row->IID ?>" style="position: absolute; top:<?= $row->SliderTop ?>px; left:<?= $row->SliderLeft ?>px;">
Атрибут data-yourid
таков, что вы можете прочитать его позже, и он действителен в HTML5.И, наконец, следующий скрипт (только один раз, т.е. после endforeach
с):
$(function () {
$(".yourclass").draggable({
stop: function (event, ui) {
p = $(this).position();
$.post("/admin/set_slider_image_position", {
id: $(this).attr("data-yourid"),
top: p.top,
left: p.left,
context: 'cat'
})
}
});
});