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

发布于 2024-09-18 13:34:34 字数 212 浏览 6 评论 0原文

如何知道当前元素是否不是第一个子元素?

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

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

How do you know if the current element is not the first-child?

It should work with $(this), for example:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

℡Ms空城旧梦 2024-09-25 13:34:34

您可以这样做只是为了测试某个元素是否是第一个子元素:$(this).is(':first-child')。其他选择器如 :last-child 也可以工作。

You can do this just to test an element if it's the first child: $(this).is(':first-child'). Other selectors like :last-child would work too.

原谅我要高飞 2024-09-25 13:34:34

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

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

You could simply ask for its .index() position (relative to its siblings).

$(this).index();   // returns a zero based index position
迷路的信 2024-09-25 13:34:34

对于 #thing 中所有非第一个子元素的 li

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

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

For all li's in #thing that aren't first child:

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

see http://api.jquery.com/not-selector/

烟雨扶苏 2024-09-25 13:34:34

另外,您可以检查是否定义了 $(this).prev().length ,如下所示:

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

Also, you can check if $(this).prev().length is defined, like in:

if (!$(this).prev().length){ //This means $(this is the first child
    //do stuff
}
路还长,别太狂 2024-09-25 13:34:34

如果您想选择除第一个子项之外的所有项,请按以下步骤操作:

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

If you would like to select everything except the first child, this is how to do it:

$('#some-parent').children().not(':first')
浮华 2024-09-25 13:34:34

检查索引

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

Check the index

$(this).index() == 0 // is first
潇烟暮雨 2024-09-25 13:34:34

保持简单,使用 DOM


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

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

});

Keep it simple, use the DOM


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

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

});
┾廆蒐ゝ 2024-09-25 13:34:34

对于想要普通 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

For people who want a vanilla JS solution:

<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

It's not the most elegant thing but it gets the job done.

You can even check if it's the nth element in the same fashion.

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
情未る 2024-09-25 13:34:34

jQuery .not()

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

jQuery .not()

$(this).not(':first');
西瓜 2024-09-25 13:34:34
$("li").click(function(e) {
   if ($(this).index != 0 )
  {
      /* do something */
   }
});
$("li").click(function(e) {
   if ($(this).index != 0 )
  {
      /* do something */
   }
});
各自安好 2024-09-25 13:34:34

实现此目的的一种不太复杂(兼容 IE 9)的纯 JavaScript 方法是使用 Elementmatches 函数。请参阅 https://developer.mozilla.org/en-US /docs/Web/API/Element/matches

示例:

console.log( document.querySelectoer( '#my-div' ).matches( ':first-child' ) ); // true or false

A less complex (IE 9 compatible) pure/vanilla JavaScript way to achieve this is to use the matches function of Element. See https://developer.mozilla.org/en-US/docs/Web/API/Element/matches

Example:

console.log( document.querySelectoer( '#my-div' ).matches( ':first-child' ) ); // true or false
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文