开发者社区 问答 正文

Jquery是如何组织element的

Jquery中比如$(".class")会获取到很多个页面上的元素,它是如何组织这些元素的?数组吗?

展开
收起
a123456678 2016-07-11 17:48:38 2034 分享 版权
1 条回答
写回答
取消 提交回答
  • 当作Object中的元素,比如{0:Element, 1:Element...}, 可以运行下面这段代码查看:

    var ps = $("p");
    console.log(typeof ps);
    console.log("--------");
    for(var item in ps) {
        console.log(item+" "+(typeof ps[item])+" "+ps[item]);
    }
    
    
    部分输出结果:
    
    object
    --------
    0 object [object HTMLParagraphElement]
    1 object [object HTMLParagraphElement]
    2 object [object HTMLParagraphElement]
    3 object [object HTMLParagraphElement]
    4 object [object HTMLParagraphElement]
    length number 5
    prevObject object [object Object]
    context object [object HTMLDocument]
    selector string p
    jquery string 1.11.0
    constructor function function (a,b){return new n.fn.init(a,b)}
    toArray function function (){return d.call(this)}
    get function function (a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)}
    pushStack function function (a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b}
    each function function (a,b){return n.each(this,a,b)}
    map function function (a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))}
    slice function function (){return this.pushStack(d.apply(this,arguments))}
    first function function (){return this.eq(0)}
    last function function (){return this.eq(-1)}
    eq function function (a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])}
    end function function (){return this.prevObject||this.constructor(null)}
    push function function push() { [native code] }
    sort function function sort() { [native code] }
    splice function function splice() { [native code] }
    extend function function (){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g}
    find function function (a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c}
    filter function function (a){return this.pushStack(x(this,a||[],!1))}
    not function function (a){return this.pushStack(x(this,a||[],!0))}
    is function function (a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}
    init function function (a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))}
    has function function (a){var b,c=n(a,this),d=c.length;
    2019-07-17 19:54:30
    赞同 展开评论
问答分类:
问答标签:
问答地址: