2011-08-16 14 views
86

He aquí un fragmento del comienzo de mi código:jQuery selectores múltiple ID

var myUpload = $("#upload_link").upload({bla bla bla 

Básicamente lo que estoy tratando de hacer es hacer la misma llamada con unos pocos diferentes identificaciones ...

I habría asumido que esto funcionaría pero no:

var myUpload = $("#upload_link,#upload_link2,#upload_link3").upload({ 

¿Alguna idea?

+0

¿Cuál es el plugin de carga que está utilizando? ¿Estás seguro de que sigue el patrón de desarrollo de complementos recomendado? – bfavaretto

+0

Debería funcionar, debe ser algo con la función 'upload'. http://jsfiddle.net/X7TAX/ – Kokos

Respuesta

174

Prueba esto:

$("#upload_link,#upload_link2,#upload_link3").each(function(){ 
    $(this).upload({ 
     //whateveryouwant 
    }); 
}); 
+2

Esta respuesta definitivamente funcionará pero, idealmente, cualquier lógica de complemento debería aplicarse a todos los elementos coincidentes. – ShankarSangoli

31

Si usted le da a cada uno de estos casos, una clase puede utilizar

$('.yourClass').upload() 
4

debería. Por lo general, así es como haces múltiples selectores. De lo contrario, puede no gustarle que intente asignar los valores de retorno de tres cargas a la misma var.

Sugeriría usar .each o tal vez empujar los retornos a una matriz en lugar de asignarlos a ese valor.

0

Eso debería funcionar, es posible que necesite un espacio después de las comas.

Además, la función que llame después debe admitir una matriz de objetos, y no solo un objeto singleton.

14

Usted puede uso múltiple id 's la forma en que escribió:

$('#upload_link, #upload_link2, #upload_link3') 

Sin embargo, eso no significa que existan esos identificadores de dentro del DOM cuando se ha ejecutado el código. Tampoco significa que upload es una función legítima. Tampoco significa que upload ha sido construido de forma tal que permite múltiples elementos en una selección.

upload es un plugin jQuery personalizado, por lo que tendrá que mostrar lo que está pasando con upload para que podamos ayudarle.

8

Asegúrese de que el complemento upload implemente this.each para que ejecute la lógica de todos los elementos coincidentes. Idealmente debería funcionar

$("#upload_link,#upload_link2,#upload_link3").upload(function(){ });