Dit is verontrustend me voor de voorbije paar uur nu.
Ik heb een tafel. Binnen die tabel ik ben op zoek naar de dichtstbijzijnde, vorige tabel rij met een specifieke gegevens attribuut. Ik doe deze zoekopdracht direct na een succesvol gebruik van jQuery sorteerbaar. Ik heb bijna alles geprobeerd en het komt altijd met de verkeerde dingen.
Hier is wat ik gebruik
var newIndex = ui.item.index();
var menuLevel = parseInt($(#menu-table).find([data-menu-nesting=' + newIndex + ']).attr(data-menu-level));
var menuId = $(#menu-table).find([data-menu-nesting=' + newIndex + ']).attr(data-menu-id);
if (menuLevel == 2) {
var findAboveRowName = $(.menu-table-rows[data-menu-nesting=' + newIndex + ']).prev(.menu-table-rows).data(menu-level,1).attr(data-menu-name);
alert(findAboveRowName);
}
if (menuLevel == 3) {
var findAboveRowName = $(.menu-table-rows[data-menu-nesting=' + newIndex + ']).prev(.menu-table-rows).data(menu-level,2).attr(data-menu-name);
alert(findAboveRowName);
}
In wezen is de variabele newIndex verondersteld om de nieuwe positie van de rij te pakken nadat gesorteerd, wordt menuLevel verondersteld om de gegevens attribuut menu-level van die tabel rij grijpen, en menuId grijpt een andere data attribuut van die tabel rij .
Het is specifiek op zoek naar de dichtstbijzijnde, vorige menu-level attribuut in de tabel rijen. Dus als een tabel rij met een menu-niveau attribuut van 2 wordt verplaatst, is het op zoek naar de dichtstbijzijnde tafel rij met een menu-niveau attribuut van 1.
De volledige jQuery worden gesorteerd script ik gebruik als dat nodig is
$(#sortable).sortable({
update: function(event, ui) {
var serial = $('#sortable').sortable('serialize');
var newIndex = ui.item.index();
var menuLevel = parseInt($(#menu-table).find([data-menu-nesting=' + newIndex + ']).attr(data-menu-level));
var menuId = $(#menu-table).find([data-menu-nesting=' + newIndex + ']).attr(data-menu-id);
if (menuLevel == 2) {
var findAboveRowName = $(.menu-table-rows[data-menu-nesting=' + newIndex + ']).prev(.menu-table-rows).data(menu-level,1).attr(data-menu-name);
alert(findAboveRowName);
// $.post(./menu-controller.php, { adjustParent: true, id: menuId, parent: findAboveRowName });
}
if (menuLevel == 3) {
var findAboveRowName = $(.menu-table-rows[data-menu-nesting=' + newIndex + ']).prev(.menu-table-rows).data(menu-level,2).attr(data-menu-name);
alert(findAboveRowName);
// $.post(./menu-controller.php, { adjustParent: true, id: menuId, parent: findAboveRowName });
}
$.ajax({
url: ./menu-controller.php,
type: post,
data: serial,
success: function() {
$(#sortable).load(./menu-manager.php #menu-table, function() {
$.get('./menu-admin.js');
});
},
error: function(){
alert(A problem occurred when moving this menu item. Please try again or contact support.);
}
});
},
handle:'.move-item',
connectWith:'#menu-table',
placeholder: highlight,
containment: parent,
revert: true,
tolerance: pointer,
items: 'tbody > *'
});