簡體   English   中英

用jQuery遍歷表

[英]Traversing Table with jQuery

我在TR元素上有一個帶有HTML屬性的表,標題為“ data-order”,其中僅包含一個整數,該整數指示對表進行排序的順序(降序)。 現在,該代碼僅檢查被單擊TR之前的行-我試圖做的是讓它掃描表中其位置之前的所有行,並找到大於(不大於或等於)的數字。 ),然后調用swaprow函數...

這是用於向上移動行的JavaScript。

function adjustRank(id, e) {
    var url = "/ajax/moveup/" +  aid;
    var row = $(e).closest("tr").get(0);
    var prevRow = $(row).prev().get(0);
    var moveUp = false;
    var prevRowOrder = parseInt($(prevRow).attr("data-order"));
    var rowOrder = parseInt($(row).attr("data-order"));

    $.ajax({
        type: "POST",  
        url: url,
        data: {aid: aid},
        dataType: "json",
        success: function () 
        { 
            if(rowOrder + 1 > prevRowOrder)  // think this is where I need to traverse the table
                swapRows(row, prevRow);
        },
        failure: function () { alert("Error processing request."); }
    });
}

這是表格中的幾個項目,例如:

<table id="listings" style="min-height:150px; width:100%;">
    <tr id="1" data-order="11"><td>1</td><td align="left"><span onclick="adjustRank('ace93485-cea5-4243-8294-9f3d009aba3d', this)" style="cursor:pointer;">Lindsey Vonn</span></td><td></td></tr>
    <tr id="2" data-order="6"><td>2</td><td align="left"><span onclick="adjustRank('9f83aed6-b99a-4674-a8b7-9f3d009aba38', this)" style="cursor:pointer;">Al Horford</span></td><td></td></tr>
    <tr id="3" data-order="5"><td>3</td><td align="left"><span onclick="adjustRank('d48a52bd-17e9-4631-9a2e-9f3d009aba39', this)" style="cursor:pointer;">Derek Jeter</span></td><td></td></tr>
</table>

您可以使用遞歸來解決該問題。 請查看代碼。

window.adjustRank = function(id, el) {
    var orderDiff = 1; 
    var row = $(el).closest("tr");
    var order = parseInt(row.attr("data-order")) + orderDiff;
    row.attr("data-order", order);

    var prevRow = row.prev();
    if(prevRow.get(0)){
        moveUp(order, row, prevRow);
    }
}

window.moveUp = function(order, row, prevRow){
    if(order > parseInt(prevRow.attr("data-order"))){
        var prevPrevRow = prevRow.prev();
        if(prevPrevRow.get(0)){
            moveUp(order, row, prevPrevRow);
        } else {
            prevRow.before(row);
        }
    } else {
        prevRow.after(row);
    }
}

如果通過AJAX獲得orderDiff ,則將代碼放入AJAX調用成功函數中。 請看這個演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM