Je fais une boucle à travers quelques éléments d'entrée de type "case à cocher". Après cela, j'ajoute des valeurs et des attributs vérifiés à un tableau. Ceci est mon code:
var stuff = {};
$('form input[type=checkbox]').each(function() {
stuff[$(this).attr('value')] = $(this).attr('checked');
});
Cela fonctionne bien, mais je me demande si je peux faire exactement la même chose avec la méthode .Push () dans Jquery?
J'ai essayé quelque chose comme ça mais ça ne marche pas:
stuff.Push( {$(this).attr('value'):$(this).attr('checked')} );
Edit:
J'essayais d'utiliser la méthode .Push () sur Object, mais .Push () n'est en réalité qu'une méthode de Array Object.
.Push()
est une méthode de objet de tableau intégré
Cela n’a aucun lien avec jQuery.
Vous définissez un objet littéral avec
// Object
var stuff = {};
Vous pouvez définir un littéral Array comme ceci
// Array
var stuff = [];
ensuite
stuff.Push(element);
Les tableaux ont en fait leur syntaxe entre crochets stuff[index]
héritée de leur parent, Object. C'est pourquoi vous pouvez l'utiliser comme vous le faites dans votre premier exemple.
Ceci est souvent utilisé pour une réflexion sans effort pour un accès dynamique aux propriétés
stuff = {}; // Object
stuff['prop'] = 'value'; // assign property of an
// Object via bracket syntax
stuff.prop === stuff['prop']; // true
stuff
est un objet et Push
est une méthode d'un tableau. Vous ne pouvez donc pas utiliser stuff.Push(..)
.
Disons que vous définissez stuff
comme un tableau stuff = [];
vous pouvez alors appeler la méthode Push
.
Cela fonctionne car l'objet [clé/valeur] est bien formé.
stuff.Push( {'name':$(this).attr('checked')} );
Considérant que cela ne fonctionnera pas parce que l'objet n'est pas bien formé.
stuff.Push( {$(this).attr('value'):$(this).attr('checked')} );
Cela fonctionne parce que nous traitons stuff
comme un tableau associatif auquel nous avons ajouté des valeurs.
stuff[$(this).attr('value')] = $(this).attr('checked');
donc c'est facile)))
Regarde ça...
var stuff = {};
$('input[type=checkbox]').each(function(i, e) {
stuff[i] = e.checked;
});
Et vous aurez:
Object {0: true, 1: false, 2: false, 3: false}
Ou:
$('input[type=checkbox]').each(function(i, e) {
stuff['row'+i] = e.checked;
});
Tu vas avoir:
Object {row0: true, row1: false, row2: false, row3: false}
Ou:
$('input[type=checkbox]').each(function(i, e) {
stuff[e.className+i] = e.checked;
});
Tu vas avoir:
Object {checkbox0: true, checkbox1: false, checkbox2: false, checkbox3: false}
Une autre façon de le faire serait:
stuff = Object.assign(stuff, {$(this).attr('value'):$(this).attr('checked')});
Lisez plus ici: Object.assign ()
C'est vraiment facile: Exemple
//my object
var sendData = {field1:value1, field2:value2};
//add element
sendData['field3'] = value3;