151 votes

jQuery obtenir les valeurs de coché des cases à cocher dans un tableau

Je suis en train d'essayer d'obtenir des valeurs de toutes les cases qui sont en cours d'extraction et de les stocker dans un tableau. Voici mon code pour l'instant:

 $("#merge_button").click(function(event){
    event.preventDefault();
    var searchIDs = $("#find-table input:checkbox:checked").map(function(){
      return $(this).val();
    });
    console.log(searchIDs);
  });

Cependant, cette sorties plus que j'ai besoin. Je n'obtenez pas seulement des valeurs, mais quelques autres trucs que je ne veux pas.

["51729b62c9f2673e4c000004", "517299e7c9f26782a7000003", "51729975c9f267f3b5000002", prevObject: jQuery.fn.jQuery.init[3], contexte: document de jquery: "1.9.1", constructeur: fonction init: fonction...]

Je voudrais juste ID (3 premiers articles dans ce cas).

En utilisant $.each et en poussant les valeurs d'un tableau, j'désiré de sortie:

$("#find-table input:checkbox:checked").each(function(){ myArray.push($(this).val()); })

["51729b62c9f2673e4c000004", "517299e7c9f26782a7000003", "51729975c9f267f3b5000002"]

Cependant, je voudrais utiliser $.map, car il me permet de gagner une ligne de code et est plus joli.

Merci

315voto

Andrew Whitaker Points 58588

Appelez .get() à la fin de son tour la résultante de l'objet jQuery en un véritable tableau.

$("#merge_button").click(function(event){
    event.preventDefault();
    var searchIDs = $("#find-table input:checkbox:checked").map(function(){
      return $(this).val();
    }).get(); // <----
    console.log(searchIDs);
});

Par la documentation:

Comme la valeur de retour est un objet jQuery, qui contient un tableau, il est très courant d'appel .get() sur le résultat de travailler avec une base de tableau.

26voto

Cristi Pufu Points 2878

DÉMO: http://jsfiddle.net/PBhHK/

$(document).ready(function(){

    var searchIDs = $('input:checked').map(function(){

      return $(this).val();

    });
    console.log(searchIDs.get());

});

Appelez simplement get() et vous aurez votre tableau comme il est écrit dans les specs: http://api.jquery.com/map/

$(':checkbox').map(function() {
      return this.id;
    }).get().join();

18voto

tymeJV Points 48178

Vous avez besoin d'ajouter .toArray() à la fin de votre .map() fonction

$("#merge_button").click(function(event){
    event.preventDefault();
    var searchIDs = $("#find-table input:checkbox:checked").map(function(){
        return $(this).val();
    }).toArray();
    console.log(searchIDs);
});

Démo: http://jsfiddle.net/sZQtL/

10voto

NuclearGhost Points 1538

J'ai refait ton code un peu et je pense que je fourni avec la solution que vous cherchez. Fondamentalement, au lieu de fixer searchIDs à la suite de l' .map() j'ai juste poussé les valeurs dans un tableau.

$("#merge_button").click(function(event){
  event.preventDefault();

  var searchIDs = [];

  $("#find-table input:checkbox:checked").map(function(){
    searchIDs.push($(this).val());
  });

  console.log(searchIDs);
});

J'ai créé un violon avec le code en cours d'exécution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X