2011-08-04 18 views
5

Si tengo un controlador de eventos como:cadena de dos eventos jquery

function A() { 
... 
} 

es posible asignar a más de un evento:

$("#test1").keyup(A); 
$("#test2").change(A); 

Pero me pregunto si es posible hacerlo con sólo una frase, algo así como:

$("#test1").keyup, $("#test2").change (function() { 
    ... 
}); 
+0

Yo no lo creo, pero entonces, no soy un experto. Curioso por ver las respuestas aquí. – Mrchief

+0

¿Desea los eventos de cadena que declara en diferentes ID? ¿Qué estás tratando de hacer realmente? –

+0

que desea asignar la misma función a diferentes identificaciones y diferentes eventos para ellos (mi caso: un SELECT debe responder a onchange evento y la entrada de texto tiene que responder a onKeyUp, pero es la misma funcion UpdateGraph que gestiona el evento) – Ivan

Respuesta

0

Respuesta corta? No. ¿Larga respuesta? De ningún modo.

Lo sentimos, no tener la respuesta que usted esperaba. Pero la buena noticia es que su código se ve al margen de esa limitación.

+0

respuesta es: sí, se puede hacer, véase la respuesta de @ Jacek-Kaniuk continuación –

+1

@RensdeNobel: respuesta sigue siendo No. Al menos no en la forma OP quería, con específica elemento/gatillo combinaciones que disparan una función.Por supuesto, podría escuchar todos los factores desencadenantes/eventos que quiera usar, y todos los elementos en los que puedan ocurrir los desencadenantes/eventos, y luego observar el objeto del evento para determinar si se detectó la combinación correcta, pero es probable que más fácil simplemente vinculando cada combinación por separado. –

3
$("#test2").bind('keyup change', A); 

/editar como para diferentes elementos y eventos - es:

$("#test1, #test2").bind('keyup change', A); 

o

$("#test1").bind('keyup', A); 
$("#test2").bind('change', A); 

dependiendo de lo qué se puede esperar. No hay manera más simple

+0

Son 2 elementos diferentes. Todos están saltando la pistola aquí. – Mrchief

+0

Esto funcionaría para escuchar esos dos eventos en los elementos que coinciden con el selector jQuery, pero el OP está buscando dos eventos diferentes en dos elementos diferentes. Entonces solo un "keyup" en "# test1" O un "cambio" en "# test2", pero no un "cambio" en "# test1". –

+0

@Jacek_FH - El segundo ejemplo de tu edición funcionaría. Pero entonces el OP también puede quedarse con lo que tienen actualmente. El primer ejemplo de su edición vinculará ambos eventos a ambos elementos. –

0

Si estos eran el mismo elemento, dicen #test1, a continuación, puede encadenar los métodos

$('#test1').change(A).keyup(A); 

Sin embargo, con más de 1 elemento no se les puede encadenar, o hacer cualquier otra cosa similar a su ejemplo.

2

Sí, sí lo es. Sin embargo, es realmente horrible.

$("#test1").keyup(A).parent().find("#test2").change(A); 

http://jsfiddle.net/8RwZY/

También existe esta atrocidad:

$("#test1, #test2").eq(0).keyup(A).end().eq(1).change(A); 

http://jsfiddle.net/8RwZY/1/

+0

¡Lol! Sugeriría que nunca uses esos horrores de codificación similares. –

+0

@Jose Faeti - Totalmente de acuerdo. A menos que trates de lograr que alguien renuncie: p – karim79

Cuestiones relacionadas