2009-02-16 15 views
6

que estoy tratando de hacer que la siguiente selección:jQuery selector de contexto pregunta

$(".program", row) 

donde "fila" es un objeto jQuery que contiene dos filas de la tabla. Uno de los TR tiene el 'programa de clase" no parece Este selector para encontrarlo Sin embargo, las siguientes obras:...

$(".title", row) 

donde div.title es un descendiente de tr.program

Si yo uso un objeto jQuery como un contexto de selección, ¿no soy yo capaz de igualar elementos de nivel superior de ese objeto jQuery?

gracias,

-Morgan

Respuesta

-1

lo más certainl y son capaces de hacer coincidir los elementos de nivel superior. ¿Podríamos ver la fuente que estás usando? Su código debería estar funcionando, por lo que probablemente haya un problema en el HTML mismo.

0

Estás en el camino correcto con los descendientes. Pasar contexto a un selector busca todos los descendientes encontrados en ese contexto.

En su caso, dado que el objeto no es un "elemento primario que contiene dos filas", sino más bien "una colección de filas", no se puede seleccionar .program. Desde .title es un descendiente real en su colección, es seleccionable.

+0

fresca. Gracias por confirmar mi observación. Mi objetivo es el restult de $ (algunosHTML) .appendTo (aTable). ¿Alguna sugerencia sobre la mejor manera de seleccionar una de esas filas por clase? Podría iterar sobre el objeto jquery, pero espero algo un poco más bonito. – morgancodes

+0

La iteración usando la función $ .each de jQuery no es tan fea, si desea conservar su código de selector existente. –

2

Mi comprensión es que el contexto debe ser el nivel de raíz, es decir, un elemento primario dentro del cual desea realizar su selección.

EDIT: Habiendo hecho un poco de lectura, debe ser capaz de igualar elementos de nivel superior del marco (el contexto predeterminado es document).

Beardscratchers tiene un buen artículo sobre el uso del contexto con los selectores de jQuery. En general, debe intentar pasar un identificador de elemento como el contexto para un conjunto envuelto jQuery, ya que es la forma más eficaz de localizar un elemento.

Internamente, el contexto de selección se lleva a cabo con el método .find, por lo que es equivalente a $(selector, context)$(context).find(selector)

+0

Si es equivalente a '$ (contexto).find (selector) 'entonces se debe tener en cuenta que el selector no coincidirá con el contexto si es un elemento, ya que find() solo coincide con los descendientes. – Jason

+1

@ Jason Así es, el contexto es el alcance en el que buscar, excluirse –

6

Parece que usted está tratando de seleccionar los elementos de los que ya ha seleccionado (que residen en el objeto jQuery) .

El contexto, en lo que respecta a jQuery, es como especificar un elemento primario: el contexto es un nodo en algún lugar ARRIBA de lo que está buscando en el árbol DOM. El contexto es donde jQuery buscará el selector que ha especificado.

Si estoy en lo cierto acerca de lo que está tratando de hacer, entonces esto debería funcionar:

row.filter('.program'); 

// And then: 
row.filter('.program').find('.title');