tejinderss
tejinderss

Reputation: 1652

Get closest elments of corresponding list of elements in javascript/jquery

I have a list of elements:

var checked_inputs = $('.select-feedback:checked');

Now i want to get their closest division element whose class is 'MessageRow'. I have done this trick to get it:

    $('.radiusRight').click(function(event) {
    event.preventDefault();
    var feedbacks = new Array();
    var checked_inputs = $('.select-feedback:checked');
    for (var i=0; i<checked_inputs.length; i++) {
        feedbacks.push($(checked_inputs[i]).closest('.messageRow').attr('id'));
    }
    var feedback_ids = feedbacks.map(function(val) { return val.split('-')[1] });
    var feedback_divs = feedbacks.map(function(val) { return '#' + val }).join(',');
    $.ajax({
        url: '/business/feedback/delete/',
        type: 'POST',
        data: {'ids': feedback_ids},
        success: function(data) {
            $(feedback_divs).fadeOut();
        }
    })
})

Is there any better way to accomplish this? Or is this a good way? Thanks in advance.

Upvotes: 1

Views: 115

Answers (1)

Andreas
Andreas

Reputation: 21911

Your way is a little bit complicated - imho...

$('.radiusRight').click(function(event) {
    event.preventDefault();

    var feedback_ids = $(".select-feedback:checked").map(function() {
        var id = $(this).closest(".messageRow").attr("id");
        return id.split("-")[1];
    });

    $.ajax({
        url: "/business/feedback/delete",
        type: "POST",
        data { "ids": feedback_ids },
        success: function() {
        $("#" + feedback_ids.join(", #")).fadeOut();
        }
    });
})

Upvotes: 1

Related Questions