如何检查元素是不是第一个孩子?

时间:2010-09-09 12:23:12

标签: jquery html dom jquery-selectors css-selectors

你怎么知道当前元素是不是第一个孩子?

它应该与$(this)一起使用,例如:

$("li").click(function(e) {
    if (/* $(this) is not the first-child */)
    {
        /* do something */
    }
});

10 个答案:

答案 0 :(得分:57)

如果元素是第一个孩子,您可以这样做来测试元素:$(this).is(':first-child')。其他选择器如:last-child也可以使用。

答案 1 :(得分:28)

您可以简单地询问其.index()位置(相对于其兄弟姐妹)。

$(this).index();   // returns a zero based index position

答案 2 :(得分:10)

对于li中不是第一个孩子的所有#thing

$('#thing li:not(:first-child)')

请参阅http://api.jquery.com/not-selector/

答案 3 :(得分:4)

如果你想选择除第一个孩子以外的所有东西,这是怎么做的:

$('#some-parent').children().not(':first')

答案 4 :(得分:4)

此外,您可以检查是否已定义$(this).prev().length,例如:

if (!$(this).prev().length){ //This means $(this is the first child
    //do stuff
}

答案 5 :(得分:3)

检查索引

$(this).index() == 0 // is first

答案 6 :(得分:1)

保持简单,使用DOM


$("li").click(function(e) {

    if (this.previousSibling != null)
    {
        /* do something */
    }

});

答案 7 :(得分:1)

对于希望使用普通JS解决方案的人:

<div id="parent">
  <div id="child-1"></div>
  <div id="child-2"></div>
  <div id="child-3"></div>
</div>
let element = document.getElementById('child-1');
console.log(element.parentElement.firstElementChild === element); // true
console.log(element.parentElement.lastElementChild === element);  // false

element = document.getElementById('child-2');
console.log(element.parentElement.firstElementChild === element); // false
console.log(element.parentElement.lastElementChild === element);  // false

element = document.getElementById('child-3');
console.log(element.parentElement.firstElementChild === element); // false
console.log(element.parentElement.lastElementChild === element);  // true

这不是最优雅的事情,但是可以完成工作。

您甚至可以相同的方式检查它是否是第n个元素。

let n = 2; // check if it's the 2nd child

let element = document.getElementById('child-2');
// index starts at 0
console.log(element.parentElement.children[-1 + n] === element); // true

答案 8 :(得分:0)

jQuery .not()

$(this).not(':first');

答案 9 :(得分:0)

$("li").click(function(e) {
   if ($(this).index != 0 )
  {
      /* do something */
   }
});