No entiendo esta syntax:
var dir = $("a.store").parents("table")[0]; var stores = $("a.store:has(b)", dir);
¿Qué contiene la store
?
¿Cuál es el significado de "$("a.store:has(b)", dir);"
?
Devolverá una colección de elementos dom que coinciden con el selector css (“a.store:has(b)”) que son hijos del elemento dom almacenado en la variable ‘dir’.
En su ejemplo, dir
es el contexto del selector. De los documentos vinculados por felix en su comentario:
De forma predeterminada, los selectores realizan sus búsquedas dentro del DOM a partir de la raíz del documento. Sin embargo, se puede dar un contexto alternativo para la búsqueda usando el segundo parámetro opcional para la función $ (). Por ejemplo, para realizar una búsqueda dentro de un controlador de eventos, la búsqueda se puede restringir así:
$('div.foo').click(function() { $('span', this).addClass('bar'); });
De los documentos de jQuery,
: tiene () Selector
Selecciona elementos que contienen al menos un elemento que coincide con el selector especificado.
La expresión $ (‘div: has (p)’) coincide con
si existe
en cualquier lugar entre sus descendientes, no solo como hijo directo.
http://api.jquery.com/has-selector/
Respecto al segundo parámetro de jQuery, es el contexto. Puede ser un elemento DOM en el que opera el selector.
En su caso: var dir tendrá una table
que es padre de
la variable de tienda contendrá solo aquellos que tienen una
dentro de ellos.
$("a.store")
.store
todos los elementos que tienen la clase
.store
.parents("table")[0];
Obtendrá las tablas en las que residen .
$("a.store:has(b)", dir);
Encontrará todos los elementos que tienen la clase
.store
y contienen un elemento , utilizando el
dir
tablas previamente encontradas, lo que significa que, en lugar de recorrer todo el documento para buscar coincidencias, solo se analizarán estas tablas .
En su forma más simple ..
Es equivalente a hacer ..
$('someParent').find('.matchingDescendants');