XXDebugger
XXDebugger

Reputation: 1581

get the all the id's from a class when the image is selected

I have few uploaded images in one div and I want to move them to another div and update the database table. For that I need the id's of the images selected and the name of the div where I want to move.

I have the id of the selected image using the check box but I am not sure how can I get all id's in the end .

function MoveImages(){
   for ( var i = 0; i < $(".ct input[type=checkbox]:checked").length; i++) {
        var element = $(".ct input[type=checkbox]:checked")[i];
        var parent = element.parentNode;
        var id = parent.getAttribute('id');     
    }
 }

how can I get all the id's in the end ? This is how my class looks like.

<div class="ct" id="559429bc0d559162552c9728">
       <input type="checkbox" class="remove">
      <img src="/image?id=c9728" data-src="random.JPG"  id="previewImagec9728">
</div>

the move function should return all the id's.

Upvotes: 0

Views: 79

Answers (4)

y34h
y34h

Reputation: 1659

use :has and .map

$('.ct:has(:checked)').toArray().map(function(element, index) { return element.id })

or

$('.ct:has(:checked)').map(function(index, element) { return element.id }).toArray()

in both cases .toArray() is to get a normal array instead of a jquery array

Upvotes: 0

moonwave99
moonwave99

Reputation: 22817

Use $.map():

var yourIds = $(".ct input[type=checkbox]:checked").map(function(){
  return $(this).parent().attr('id');
});

Upvotes: 1

Howard Nguyen
Howard Nguyen

Reputation: 19

With a bit of JQuery's $.each, substring, and JS array methods, you can grab the raw IDs and put them in an array like so:

var ids = [];

//For each element that matches ".ct input[type=checkbox]:checked".
$.each($('.ct input[type=checkbox]:checked'), function() {
    //Find the image element, get the id value, and strip the first 12 characters.
    var id = $(this).find('img').attr('id').substring(12);
    //Put ID in array.
    ids.push(id);
});

Upvotes: 1

rnpd
rnpd

Reputation: 103

Try jquery's each:

$('.ct').each(function() {
   var id = $(this);
})

Upvotes: 0

Related Questions