2011-12-07 27 views
7

He intentado agregar variables de un menú desplegable en una matriz usando la función Jquery array.push() pero por alguna extraña razón no está funcionando. A continuación se presenta el enlace jsFiddle: http://jsfiddle.net/dKWnb/3/Jquery array.push() no funciona

JavaScript:

$("#test").live("click",function() { 
     var myarray = new Array(); 
     myarray.push($("#drop").val()); 
     alert(myarray); 
}); 

HTML

<Select name=drop id=drop> 
    <option value=1>1</option> 
    <option value=2>2</option> 
</select> 
<input type=button name=test id=test value=test> 
+0

¿Qué debería hacer? Porque aquí hace exactamente lo que parece que debería hacer. – netiul

+1

Solo una nota: siempre declare las matrices de esta manera 'var myarray = [];' –

+0

@DidierG .: ¿Por qué? – Matt

Respuesta

10

Su HTML debe incluir cotizaciones de atributos: http://jsfiddle.net/dKWnb/4/

No se requiere cuando se utiliza un tipo de documento HTML 5 - gracias @bazmegakapa

Crea la matriz cada vez y agrega un valor a ella ... funciona como se esperaba ?

Mover la matriz fuera de la función en vivo() funciona bien:

var myarray = []; // more efficient than new Array() 
$("#test").live("click",function() { 
     myarray.push($("#drop").val()); 
     alert(myarray); 
}); 

http://jsfiddle.net/dKWnb/5/

También tenga en cuenta que en versiones posteriores de jQuery v1.7 -> el método directo() es obsoleto y reemplazado por el método on().

+2

Utiliza un tipo de documento HTML5. No es obligatorio usar comillas alrededor de los valores de los atributos. – kapa

+2

@bazmegakapa bien entendido - he aprendido algo allí - respuesta actualizada – ManseUK

4

Su código de alerta al valor actual de la lista desplegable para mí, lo que demuestra que se ha llevado correctamente en la matriz .

¿Quieres mantener los valores antiguos y anexar? Estás recreando la matriz cada vez, lo que significa que el valor anterior se destruye.

Aquí hay un código actualizado:

var myarray = []; 
$("#test").click(function() { 
    myarray.push($("#drop").val()); 
    alert(myarray); 
}); 

jsFiddle