/ / Array of JQuery Selectors - jquery, arrays

Array of JQuery Selectors - jquery, arrays

por conveniencia, quería poder hacer referencia a mis selectores JQuery desde una matriz en lugar de individualmente. Me hicieron creer que la siguiente lógica me permitiría hacerlo:

var reference = $(".class");

reference[0].<function>;

en lugar de:

$reference1 = $("#id1");
$reference2 = $("#id2");
$reference3 = $("#id3");

$reference1.<function>

todos mis elementos tienen la clase apropiada yse están rellenando en la matriz (?), pero por alguna razón no puedo "llamar a las funciones de JQuery desde la matriz de la misma manera que puedo hacerlo con un solo selector. ¿Hay algo que falte o una razón que no pueda hacer? ¿esta?

Respuestas

1 para la respuesta № 1

reference[0] se refiere a un Elemento en lugar de un objeto jQuery.

Si desea referirse al primer objeto que coincide con un selector, use .primero():

/* This returns a jQuery object. */
reference.first();

Si desea que el objeto esté en el índice n, use ": eq (n)"en su selector, o la eq () método. Estos son indexados a cero:

/* This returns a jQuery object. */
$(".class:eq(n)");
/* This returns a jQuery object. */
reference.eq(n);

También podría "volver a envolver" un elemento, pero esto no es idiomático:

/* This returns an Element. */
reference[n];
/* This returns a jQuery object. */
$(reference[n]);

Del mismo modo, podría utilizar obtener. Pero los métodos anteriores son preferibles:

/* This returns an Element. */
reference.get(n);
/* This returns a jQuery object. */
$(reference.get(n));

Lo que significa envolver:

Esta es nuestra página:

<!DOCTYPE html>
<html>
<head>
<title>Hey</title>
</head>
<body>
<p>You</p>
<p>!!!</p>
</body>
</html>

Esto crea un objeto jQuery llamado $p, seleccionando los dos <p> Elementos:

/* This returns a jQuery object. */
var $p = $("p");

Este objeto tiene todos esos métodos jQuery útiles que amamos:

$p.css("color", "purple"); /* this colors all paragraphs purple */

Como dije, podemos seleccionar el segundo (o primer) párrafo con .eq():

/* This returns a jQuery object. */
$p.eq(1); /* this selects the second paragraph (because indices start at 0) */

O podríamos hacerlo como lo intentabas hacer:

/* This returns an Element. */
$p[1];

Pero esto nos da un simple Elemento antiguo, y no un objeto jQuery. Sin embargo, si aplicamos la función jQuery, recuperamos un objeto jQuery, y podemos usar todos nuestros queridos métodos jQuery:

$($p[1]).text("???");

Aplicando $ De nuevo a un elemento es lo que llamé re-envolver.


2 para la respuesta № 2

Tu primer código de ejemplo no funciona como reference[0] buscará el elemento DOM subyacente y esos no tienen métodos jQuery, por lo tanto, debe estar recibiendo un error.

.eq(index) puede ser usado

Reduzca el conjunto de elementos coincidentes al del índice especificado.

Cambia tu código como

var reference = $(".class");
reference.eq(0).fn()