如何判断当前元素不是第一个子元素?
例如,可以使用$(this)
来实现:
$("li").click(function(e) {
if (/* $(this) is not the first-child */)
{
/* do something */
}
});
如何判断当前元素不是第一个子元素?
例如,可以使用$(this)
来实现:
$("li").click(function(e) {
if (/* $(this) is not the first-child */)
{
/* do something */
}
});
$(this).is(':first-child')
。其他选择器如 :last-child
也可使用。.index()
位置。$(this).index(); // returns a zero based index position
.index()
会返回第一个子元素的索引0
,这是假的,而其他任何值都是真的,因此,实际上,.index()
对于除第一个子元素以外的任何元素都会返回true...完美的答案。 - gnarf选取 #thing
中除了第一个子元素以外的所有 li
元素:
$('#thing li:not(:first-child)')
$(this).prev().length
是否被定义,例如:if (!$(this).prev().length){ //This means $(this is the first child
//do stuff
}
$('#some-parent').children().not(':first')
检查索引
$(this).index() == 0 // is first
对于想要使用纯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
保持简单,使用DOM
$("li").click(function(e) {
if (this.previousSibling != null)
{
/* do something */
}
});
Element
的matches
函数。参见 https://developer.mozilla.org/en-US/docs/Web/API/Element/matches。console.log( document.querySelectoer( '#my-div' ).matches( ':first-child' ) ); // true or false
$(this).not(':first');
:first
不同于 :first-child
,使用 .not(':first')
将会从集合中移除第一个项目。 - user113716
:first
将检查它是否是 jQuery 集合中的第一个项目,我认为你可能想要使用:first-child
。 - gnarf.not(':first-child')
仍会返回一个 jQuery 集合,而不是一个布尔值... 可以使用.is(':not(:first-child)')
来实现... - gnarf!
运算符即可。 - slikts