Haroldo
Haroldo

Reputation: 37377

jQuery: how do I check if an element is the last sibling?

How do I check if an element is the last sibling?

For the last cell in a row I want to perform a different action.

This doesn't work:

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

And neither does it if I remove .parent().

Upvotes: 61

Views: 75200

Answers (5)

Caner SAYGIN
Caner SAYGIN

Reputation: 537

If you want to select multiple elements which are different tags with a common point, (for ex: all data-foo attribute defined tags like divs, inputs, text areas, etc.) you can follow this code:

var elements = $("*[data-foo]");

elements.each(function (){
    ..
    ..your code
    ..

    if (elements.index(this) == elements.length - 1) {
            ..you are at the end, do something else
    }
})

Upvotes: 0

legendJSLC
legendJSLC

Reputation: 436

you can code this way.

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

Upvotes: 5

bbeckford
bbeckford

Reputation: 4477

This is more elegant and worked for me:

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

Upvotes: 325

ntziolis
ntziolis

Reputation: 10221

Here you go, but that only make sense if you want to do something to the other tds as well other wise use the last-child method described in one of the other answers.

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

Upvotes: 8

rahul
rahul

Reputation: 187030

Try

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

Upvotes: 13

Related Questions