2010-03-22 15 views
5

Aquí está la historia ... Tengo una función jQuery que hace algo, esta función se hace referencia con mucha regularidad. Uno de los parámetros de entrada es una matriz, esta serie de datos está codificado y por lo tanto quiero pasar los datos de la siguiente manera: (esta es la forma en que lo haría usando PHP)Pase la matriz de datos a la función jQuery

myFunction(Array("url"=>"abc.com","example"=>"hello_world")); 

En lugar de

$arr=Array("url"=>"abc.com","example"=>"hello_world"); 
myFunction($arr); 

Entonces, ¿cómo puedo lograr esto con mi función jQuery, quiero que sea un trazador de líneas si es posible.

Editar

Tal vez mi ejemplo fue un poco engañoso, echar un vistazo a los índices de matriz de nuevo. La matriz que estoy enviando es una matriz asociativa.

En resumen, no quiero ninguna variable antes de mi función, quiero que la matriz se codifique directamente en el parámetro de la función como se sugiere en el primer ejemplo que di.

:-)

Respuesta

7

vuelvo a leer su pregunta editado, y su respuesta es en el objeto de javascript, al igual que los diccionarios o hashes en otros idiomas:

{ first_key: '1', second_key: '2', third_key: '3' }; 

Y para su devolución de llamada, sólo tiene que pasar en como un literal declarado en el acto:

myFunction({ first_key: '1', second_key: '2', third_key: '3'}); 
1

Aquí es ejemplo si esto es lo que quiere decir:

var arr = [ "one", "two", "three", "four", "five" ]; 

    jQuery.each(arr, function() { 
      $("#" + this).text("Mine is " + this + "."); 
      return (this != "three"); // will stop running after "three" 
     }); 

//Source http://api.jquery.com/jQuery.each/ 
+0

Gracias por su respuesta, desafortunadamente, creo que mi pregunta era un poco engañosa y, por lo tanto, esto no es relevante para mi problema. Gracias de todos modos :) –

0

No estoy del todo seguro de lo que estás pidiendo aquí, pero voy a dar un tiro contestarla . Si se está haciendo referencia a esta matriz en más de un lugar, entonces es probable que sea mejor para definirlo como una primera constante:

ARRAY = ['a', 'b', 'c'] 
    myFunction(ARRAY); 
    myFunction2(ARRAY); 

Si su única referencia a esta matriz modificable una vez, luego pasarlo a la función jQuery como un literal de matriz declarada en la función de llamada:

myFunction(['a', 'b', 'c']); 
+0

Hola, tu último ejemplo es casi exactamente lo que quiero hacer, no quiero ninguna variable antes de mi función, pero tiene que ser una matriz asociativa.Gracias de nuevo :) –

1

Mira en el formato JSON para la matriz ...

somefunction({'key1':'value', 'key2':'value'}); 
+0

Gracias por su respuesta, probé este 'func (['key1': 'value', 'key2': 'value']);' pero me sale este error 'missing] después de la lista de elementos [Break on este error] getElementContents (['key1': 'value', 'key2': 'value']); ': S –

+1

Lo arreglé, tenía los soportes incorrectos – David

+0

Esto funcionó muy bien, pero bobthabuilda llegó primero. Muchas gracias por su ayuda :) –

0

JavaScript no tiene matrices asociativas. Es probable que pueda obtener lo que usted está pidiendo con una combinación de matrices y objetos regulares:

var foo = [ 
    { 
     url: "abc.com", 
     example: "hello_world" 
    }, 
    { 
     url: "example.net", 
     example: "example" 
    } 
]; 

Hay una llamada JSON formato de datos que utiliza la sintaxis de JavaScript. Como pareces estar usando PHP y PHP tiene funciones integradas para generar JSON (encuentra json_encode() en el manual de PHP) puede ser una tarea muy simple: codifica tu estructura de datos PHP como JSON y úsala como está desde JavaScript.

Cuestiones relacionadas