Βρίσκοντας το πιο κοντινό, το προηγούμενο στοιχείο με ιδιαίτερο χαρακτηριστικό τα δεδομένα jQuery

ψήφοι
46

Αυτό έχει με ενοχλεί για τους πέρασαν λίγες ώρες τώρα.

Έχω ένα πίνακα. Μέσα σε αυτό το τραπέζι Ψάχνω για το πιο κοντινό, προηγούμενη σειρά πίνακα με ένα συγκεκριμένο χαρακτηριστικό των δεδομένων. Κάνω αυτή την αναζήτηση αμέσως μετά από μια επιτυχημένη χρήση 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 > *'
});

JSFIDDLE

Δημοσιεύθηκε 29/10/2013 στις 06:35
χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
2

.prevεπιστρέφει μόνο το αμέσως προηγούμενο στοιχείο, δεν συνεχίσετε να ψάχνετε για το πλησιέστερο στοιχείο που ταιριάζει με τον επιλογέα. Χρησιμοποιήστε .prevAllγια να βρείτε όλα τα στοιχεία που ταιριάζουν σε ένα επιλογέα, και στη συνέχεια να χρησιμοποιήσετε .first()για να περιορίσετε την πρώτη, η οποία είναι η πλησιέστερη. Και αν θέλετε να αναζητήσετε ένα συγκεκριμένο data-menu-levelχαρακτηριστικό, πρέπει να βάλετε ότι στον επιλογέα? καλώντας .data("menu-level", 1) σύνολα το χαρακτηριστικό, δεν το αναζητήσετε.

if (menuLevel == 2) {
    var findAboveRowName = $(".menu-table-rows[data-menu-nesting='" + newIndex + "']").prevAll(".menu-table-rows[data-menu-level=1]").first().data("menu-name");
    alert(findAboveRowName);    
}
Απαντήθηκε 29/10/2013 στις 06:40
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more