2009-09-28 3 views
1

Я новичок в jQuery и просто написал эту небольшую часть (с помощью знания PHP) и задавался вопросом: а) будет ли она работать b) как я могу вернуть значение в соответствии с его ключевым значением?jQuery массивы и извлекать данные и ключ

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; 
    }); 

рассматривает

+1

высота() команда принимает только строку или number как аргумент параметра (не логическое) и используется для установки высоты элементов в завернутом наборе. Что вы пытаетесь сделать здесь - '$ (this) .height (true);'? –

ответ

0

как бы я возвращать значение acording его значение ключа?

Что вы подразумеваете под этим?

Вы можете использовать ассоциативный массив, если вы хотите вместо двух массивов, так, что будет означать что-то вроде

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

Итак, теперь вы можете вернуть имя, зная высоту, и вы можете вернуть высоту зная имя. (при отсутствии дубликатов имен/высот).

+1

Ближайшей структурой для ассоциативного массива в JavaScript является объект. Использование массивов JavaScript в качестве ассоциативных массивов не рекомендуется, поскольку они не предназначены для этого - http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/ –

2

Используйте массив объектов:

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); 
    }); 

Теперь каждый смещение boxInfo содержит объект, вы можете пройти их так:

$.each(boxInfo,function(i,n) { 
    alert("Height of box at offset " + i + " is: " + n.boxHeight + " and name is: " + n.boxName); 
}); 
Смежные вопросы