2009-09-28 12 views
1

Je suis nouveau à jQuery et juste écrit ce petit morceau (avec la connaissance de PHP) et je me demandais a) cela fonctionnerait b) comment pourrais-je retourner une valeur en fonction de sa valeur de clé?jQuery tableaux et récupérer des données et la clé

var boxHeightArray = []; 
    var boxNameArray = []; 
    $("div[class=dropDiv]").each(function(i){ 
     var height = $(this).height(true); 
    var name = $(this).attr("name"); 
    boxHeightArray[i] = height; 
    boxNameArray[i] = name; 
    }); 

concernant

+1

la hauteur() ne prend que une chaîne ou number en tant qu'argument de paramètre (pas un booléen) et est utilisé pour définir la hauteur des éléments dans l'ensemble encapsulé. Qu'est-ce que vous essayez de faire ici - '$ (this) .height (true);'? –

Répondre

0

comment pourrais-je retourner une valeur acording à sa valeur clé?

Qu'entendez-vous par là?

Vous pouvez utiliser un tableau associatif si vous voulez au lieu de deux tableaux, donc cela voudrait dire quelque chose comme

$("div[class=dropDiv]").each(function(i){ 
    var height = $(this).height(true); 
    var name = $(this).attr("name"); 
    hash[name] = height; 
    ihash[height]= name ; 
}); 

vous pouvez donc maintenant retourner un nom en connaissant la hauteur, et vous pouvez retourner une hauteur en connaissant le nom. (étant donné qu'il n'y a pas de noms/hauteurs en double).

+1

La structure la plus proche d'un tableau associatif en JavaScript est un objet. L'utilisation de tableaux JavaScript en tant que tableaux associatifs n'est pas recommandée car ils ne sont pas conçus pour cela - http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/ –

2

Utilisez un tableau d'objets:

var boxInfo = [];//an array to store 'info' objects 
    $("div[class=dropDiv]").each(function(i){ 
     var height = $(this).height(true); 
     var name = $(this).attr("name"); 
     var obj = { boxHeight: height, boxName: name }; 
     boxInfo.push(obj); 
    }); 

Maintenant, chaque décalage boxInfo contient un objet, vous pouvez les parcourir comme ceci: commande

$.each(boxInfo,function(i,n) { 
    alert("Height of box at offset " + i + " is: " + n.boxHeight + " and name is: " + n.boxName); 
}); 
Questions connexes