這讓我感到困擾了幾個小時。尋找最接近的,具有特定數據屬性的元素jquery
我有一張桌子。在該表中,我正在尋找具有特定數據屬性的最近的前一個表格行。我在成功使用jQuery排序之後正在執行此搜索。我已經嘗試了幾乎所有的東西,而且總是出現錯誤的東西。
這裏就是我使用
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);
}
從本質上講,變量「newIndex」應該搶行的新位置進行排序後,menuLevel應該抓住數據屬性「菜單級「,並且menuId正在抓取該表格行的另一個數據屬性。
它專門查找表格行中最近的前一個菜單級屬性。所以,如果用2菜單級屬性錶行移動時,它看起來與1.
菜單級屬性最近的錶行,如果需要完整的jQuery排序腳本我使用
$("#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 > *'
});
不是$(「selector」)。parent(「tr [data = value]」)要走的路嗎? –
你能解釋我應該在小提琴中做什麼來看問題嗎?它提醒着一些事情;如果他們錯了,我不知道正確的警報應該是什麼。 – Barmar
在「子菜單3」下移動「子子菜單2」。它會提醒說「家」。這是不正確的,因爲在「子菜單3」下移動「子子菜單2」後,最近的下級菜單項將是「子菜單3」,而不是「家」。 –