为了账号安全,请及时绑定邮箱和手机立即绑定

上面注意事项中$( "html" ).parents()返回一个空集合,不是应该会返回document吗,难道它的父元素不属于它的祖辈范围之内?

上面注意事项中$( "html" ).parents()返回一个空集合,不是应该会返回document吗,难道它的父元素不属于它的祖辈范围之内?

正在回答

6 回答

记住就好了,又不常用

1 回复 有任何疑惑可以回复我~

你可以简单地认为API=接口。接口文件,是接口的重要组成部分。

0 回复 有任何疑惑可以回复我~

JQ源码:

里面有这么一段:这是parents()的

if ( cur.nodeType === 1 ) {     //主要看这一句,当父级对象的nodeType为1时;

matched.push( cur );           //将这个父级对象插入matched数组;matched数组初始状态是空;

}

cur = cur[dir];          

}

return matched;                //返回这个数组


所以$("html")的父级是document,document的nodeType是9,因此不会被放入数组;

然而parent()方法就没有这个判断,

parent: function( elem ) {

        var parent = elem.parentNode;

        return parent && parent.nodeType !== 11 ? parent : null;  //当父元素nodeType不为11时,直接返回

    },


2 回复 有任何疑惑可以回复我~

$( "html" ).parent()能够反馈document那么

$( "html" ).parents()至少应该能反馈一个document

这里费解!

另外打印$('.item-b').parents().css('border', '2px solid red')出来一共有7个元素,不包括document


0 回复 有任何疑惑可以回复我~

alert('谢谢采纳')

0 回复 有任何疑惑可以回复我~

我的理解是:$("html").parents()取得的是当前元素的祖先元素(但不包括根元素),在HTML中根元素(祖先元素)就是html,而在html上面已经没有父元素了,所以返回空集合

返回document的是parent(),因为parent()返回当前元素的父元素,最终取到根元素html,每个html文档都会成为 document对象,所以返回document集合

2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

上面注意事项中$( "html" ).parents()返回一个空集合,不是应该会返回document吗,难道它的父元素不属于它的祖辈范围之内?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信