2010-04-21 8 views
49

¿Cómo verifico si un elemento es el último hermano?jQuery: ¿cómo puedo comprobar si un elemento es el último hermano?

Para la última celda de una fila que desea llevar a cabo una acción diferente.

Esto no funciona:

$('td').each(function(){ 
    var $this = $(this); 
    if ($this === $this.parent().last('td')) 
     { 
      alert('123'); 
     } 
}) 

y tampoco si quito .parent().

+5

La razón por la que esto no funciona es porque está comparando dos objetos jQuery entre sí. Los objetos solo son iguales si son exactamente el mismo objeto. '$ (This) == $ (este)' es falso .. cosas locas. Tu ejemplo funcionaría si hicieras 'if ($ this.get (0) === $ this.parent(). Last ('td'). Get (0))', ya que compara los elementos DOM reales. (Http://api.jquery.com/get) – Matt

Respuesta

12

Trate

$('tr td:last-child').each(function(){ 
    var $this = $(this); 
    alert('123'); 
}); 
7

Aquí tiene, pero que sólo tiene sentido si se quiere hacer algo para los demás TDS así otro uso racional del método último hijo se describe en una de las otras respuestas .

$('td').each(function(){ 
    var $this = $(this); 
    if ($this.index() == $this.siblings().length-1) 
     { 
      alert('123'); 
     } 
}) 
277

Esto es más elegante y trabajó para mí:

if($(this).is(':last-child')) 
{ 
    alert('123'); 
} 
+30

Niza, esto debe ser marcado como la respuesta correcta para esta pregunta .. –

+2

Este es el que he usado. Muchas gracias. – James

+3

Deseo Pila vamos a emitir votos sobre el marcado una respuesta diferente como la aceptada! – Alexandru

2

puede codificar de esta manera.

var $this = $(this); 
if($this.index()==$this.siblings().size()-1) 
{ 
    alert("It's the last."); 
} 
Cuestiones relacionadas