2011-08-01 13 views
7

Decir que tengo selecciones dos jquery:Jquery Selector - Artículos múltiples

var txtA = $('#txtA'); 
var txtB = $('#txtB'); 

Para la fijación de la misma función de eventos, es esta la forma más ordenada, o me estoy perdiendo una pieza obvia de sintaxis o jQuery wizardness?

$(jQuery.merge(txtA , txtB)).click(function() { alert('hello'); }); 

Gracias.

+0

si ya tienen las dos variables selector (tal vez debido a que tenía que hacer las cosas por separado a ellos ya) entonces hay mejores formas ... – Alnitak

+0

@Felix su enlace se refiere a pasar una cadena y dejar que el motor jquery separe las consultas, tengo dos (o más) objetos fuertemente tipados. – maxp

+0

@maxp: Bueno, no era necesariamente claro cómo querías/tenías que seleccionar los elementos. –

Respuesta

9

.add() debe hacer (a condición de que ya ha poblada txtA y txtB y quiere reutilizar esas selecciones.):

txtA.add(txtB).click(function() { 
    alert('hello'); 
}); 

Dado un objeto jQuery que representa un conjunto de elementos DOM, la El método .add() construye un nuevo objeto jQuery a partir de la unión de esos elementos y los que se pasan al método. El argumento .add() puede ser prácticamente cualquier cosa que $() acepte, incluida una expresión del selector jQuery, referencias a elementos DOM o un fragmento de HTML.

+3

+1 para mostrar la única respuesta correcta que funciona con las variables existentes basadas en el selector. – Alnitak

+0

¡Buen punto @Alnitak, +1 de mí también! –

0

Sólo puede hacer:

$("#txtA, #txtB").click(function() { alert('hello'); }); 

lo mismo que un selector CSS, fresco eh! :-)

+0

no, tengo dos colecciones fuertemente tipadas '#txtA' y '#txtB' son solo ejemplos. – maxp

+0

No me preocupa @maxp Supuse erróneamente. Es posible que desee actualizar su pregunta con la necesidad explícita de las colecciones fuertemente tipadas, ya que hay un par de nosotros que han leído mal. –

2
$('#txtA, #txtB').click(function() { alert('hello'); }); 

pueden funcionar para usted

+0

Hola @Pranay Rana, me temo que eso no funcionará, tratará de seleccionar '#txtA' en el contexto de '#txtB' http://api.jquery.com/jQuery/ Creo que '#txtA ',' #txtB 'debe estar en una cadena' #txtA, #txtB '. Corrígeme si estoy equivocado. –

+2

@Alex Key - para su información puede verificar esto: http://api.jquery.com/multiple-selector/ –

+0

Hola @Pranay Rana ahora estoy confundido ... ¿alguien acaba de editar su respuesta? Hace un segundo, decía $ ('# txtA', '#txtB'), es decir, 2 parámetros no $ ('# txtA, #txtB') (1 parámetro). O eso o me estoy volviendo loco :-) He deshecho el -1. –

1

Esto es lo que he hecho:

$() 
    .add(elementOne) 
    .add(elementTwo) 
    .add(elementThree) 
    .click(function() { 
     alert('hello'); 
    });