问答详情
源自:6-4 jQuery遍历之parents()方法

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

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

提问者:ljxyaly 2017-09-29 23:28

个回答

  • 慕莱坞9527
    2017-10-20 16:15:21
    已采纳

    记住就好了,又不常用

  • 慕移动9181930
    2022-03-25 17:45:18

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

  • 慕无忌1343731
    2019-07-11 15:11:37

    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时,直接返回

        },


  • weixin_慕勒2266735
    2019-02-22 18:16:01

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

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

    这里费解!

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


  • 慕莱坞9527
    2017-10-23 14:12:43

    alert('谢谢采纳')

  • 慕粉1465824802
    2017-10-01 22:08:11

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

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