2009-11-04 14 views
11

Me gustaría seleccionar un elemento dentro del td de una de mis tablas pero realmente no entiendo la sintaxis. Esto es lo que he intentado:JQuery seleccione un elemento dentro de un td

$("table > td:#box") 

Esta es una muestra de mi estructura de la tabla:

<div id="main"> 
<div id="today"> 
    <table id="list" width="100%" cellpadding="4" cellspacing="0" border="0" style="font-size: 10px; border-collapse:collapse;"> 
    <tr id="109008"> 
    <td class="tdstd"> 
    <a class="box" href="link"></a> 
    </td> 

O Con DOM inspector de Chrome:

alt text

+0

Por favor, publique una pieza relevante del código HTML y diga qué pieza exactamente quiere para salir. – BalusC

+0

Quizás pueda mostrar un fragmento de HTML con la tabla y el elemento. ¿El elemento es un div con una "caja" de identificación? –

+0

para entender lo que necesita - tiene texto y quiere obtener el "texto" o la "identificación"? – cupakob

Respuesta

17

Bueno, "#box "significa un objeto DOM con la" casilla "de identificación, ya que se trata de una identificación única. Puede seleccionar ese directamente. Pero su código sugiere que tiene varios elementos con la "casilla" de identificación que debe cambiar. Debe asignar una clase a su elemento en el interior del TD, o si es único por ser el único DIV o SPAN en el cuadro, se puede acceder a él de esta manera:

$("table td .box") 

Tenga en cuenta que el ">" selector significa que TD tiene que ser un hijo directo de TABLE, y asumo que tienes al menos un nivel de TR entre ellos, por lo que tampoco funcionará. Mi ejemplo anterior coincide con cada elemento con la clase "caja" dentro de cualquier TD que es un elemento secundario de cualquier TABLA.

Obviamente me habría establecido una clase sobre la mesa también, y usar algo como esto:.

$("table.boxes td .box") 

Sólo para que no selecciona accidentalmente cosas fuera del ámbito que desee trabajar en


ahora ha agregado HTML, así que estoy editando mi respuesta:

$("table#list a.box") 
+2

+1 pero ya tiene una identificación en la tabla que es considerablemente más eficiente: $ ('# list td a.box') es la solución "correcta" aquí – annakata

+0

Correcto, pero yo usualmente uso el nombre de la etiqueta cuando hago selecciones jerárquicas para poder ver qué parte de la página estoy seleccionando. Si el ID hubiera sido "lista de tabla", no lo hubiera hecho, pero "lista" es tan general que podría confundirme si mi código jQuery se ejecutara mucho. Pero todo eso dicho, obviamente eres correcto :) – Sandman

1
$("table tr td .box") 

Debería hacer el truco.

-2

no estoy seguro, pero creo que, es necesario $("td#box") ...

+1

esto no es correcto - # significa selector de ID y no hay elemento con una ID de "caja" y mucho menos una td con tal – annakata

+0

al principio solo estaba poste $ ("table> td: #box") y no una paz de código :) – cupakob

+0

sí lo noté - es por eso que no te menosprecié, simplemente comenté :) – annakata

0

Este selector ...

table td a.box 

dice jQuery para encontrar la etiqueta a con un atributo que contiene class " caja". Y esta etiqueta a debe estar dentro de un td que se encuentra dentro de un table.

9

El selector más eficiente sería:

$('#list').find('a.box'); 

o:

$('a.box', $('#list')[0]); 

Al seleccionar la tabla id primero ha establecido su alcance sólo a la mesa y entonces usted puede buscar el elemento que necesitas en esa mesa.

El segundo selector es el mismo, está seleccionando algo y está dando el alcance como un segundo parámetro.

Simplemente es más fácil leer el primero.

Cuestiones relacionadas