2012-10-08 73 views
5

tengo una serie de diapositivas con sede fuera de secciones:Jquery Recuperación de la última fila de la tabla en último elemento de una serie

<div id="slides"> 
    <section id="first"> 
     <section> 
      <table> 
       <thead> 
       </thead> 
       <tbody> 
        <tr id="somethingUnique"> 
        ... 
        </tr> 
       </tbody> 
      </table> 
     </section> 
     <section> 
      <table> 
       <thead> 
       </thead> 
       <tbody> 
        <tr id="somethingUnique"> 
        ... 
        </tr> 
       </tbody> 
      </table> 
     </section> 
     ... 
    </section> 
</div> 

necesito seleccionar agarrar el ID de la última fila de la tabla en la última sección de #primera sección.

Estoy usando el siguiente Jquery, volviendo a estar "indefinido" ... ¿alguna idea?

var lastListItem = $('#first:last-child table>tbody>tr:last').attr("id"); 
    alert(lastListItem); 
+0

creé una [violín] (http://jsfiddle.net/Tdjzj/) y parece volver 'somethingUnique' –

Respuesta

0
var lastListItem = $('#first section:last table tr:last').attr("id"); 
0
var lastListItem = $("#first").find("section").last().find("tr").last().attr("id"); 

prefiero utilizando [0] .ID en lugar de .attr ("id") ya que es uno menos llamada al método; sin embargo, si no está seguro de que siempre tendrá una mesa en esa posición DOM, attr es más seguro.

+0

Puede usar pseudo-selectores para encontrar elementos, pero elegí escribir mi respuesta usando métodos encadenados para un mejor rendimiento. –

+0

¿Mide usted que esta solución es realmente más rápida en los navegadores compatibles con 'querySelectorAll()'? –

+0

@ FrédéricHamidi No, dependiendo del navegador, querySelectorAll podría ser más rápido. Sin embargo, sigue siendo un método que necesita analizar una cadena larga para determinar qué tipo de elementos buscar en el DOM. Prefiero utilizar querySelectorAll (o pseudo-selectores en jQuery) cuando el selector es más corto, no más largo. –

0

.find():

Obtener los descendientes de cada elemento en el conjunto actual de emparejados elementos, filtrados por un selector, objeto jQuery, o elemento.

​$("#first")​.find("tr:last").attr("id") 

o, más sencillamente, en este caso:

$("#first tr:last").attr("id") 

EXAMPLE

+0

No es necesario '$.encontrar' en este caso como has mostrado –

0

Las otras respuestas trabajo, pero el problema con su intento es el hecho de que :last-child tiene que aplicarse al elemento secundario (section), no al elemento principal (#first). Lo que sigue debe trabajar

$('#first section:last-child table>tbody>tr:last').attr("id"); 

Y podría simplificarse en

$('#first section:last-child tr:last-child').attr("id"); 

http://jsfiddle.net/e7mUD/1

Cuestiones relacionadas