gpt4 book ai didi

javascript - jQuery 选择器元素如何也是 jQuery 对象

转载 作者:行者123 更新时间:2023-11-30 05:38:48 25 4
gpt4 key购买 nike

在理解 jQuery 及其核心工作原理的过程中,我正在构建一个非常小的库/框架。

我想知道 jQuery 选择器元素如何也作为 jQuery 对象返回并具有 jQuery 的所有方法。例如:

$('ul li').each(函数(){
控制台日志($(这个));
})

$(this) 是对 DOM 元素

  • 的 jQuery 对象的引用,并且具有 jQuery 的所有方法。

    日志显示:

    [li, context: li, jquery: "2.1.0", constructor: function, selector: "", toArray: function…]
    0: 李
    语境:李
    长度:1
    __proto__: 对象[0]

    这是库的一小部分,说明了我如何处理初始化和 each 方法。

    (function( global, factory ) {factory( global );}
    (window, function( window ) {
    var document = window.document;
    var LibInit = function( selector ) {
    return new Lib( selector );
    };
    function Lib ( selector ) {
    this.selector = selector;
    return this;
    }
    Lib.prototype = {
    each: function(stack, callback) {
    var i;
    for ( i in stack ) {
    if ( typeof stack[i] === 'object' )
    callback(i, stack[i]);
    }
    return this;
    }
    }
    window.Lib = LibInit;
    }
    ));

    Lib().each(document.querySelectorAll('ul li'), function(i,v){
    console.log(v);
    })

    这个 Lib 分别返回特定元素的直接 DOM 对象。如何更改它以返回用 Lib 对象包裹的 DOM 对象。

    对于复杂的解释,我很抱歉,只是想不出更好的解释方式。

    也是一个附带问题。 $/jQuery 的 console.log 如何为 init 函数返回字符串,$.plugin 如何从原型(prototype)返回一个方法。基本上没有 $ 的原型(prototype),因为 $ 是对未实例化函数/对象的引用。

  • 最佳答案

     for ( i in stack ) {
    if ( typeof stack[i] === 'object' )
    callback(i, new Lib(stack[i]));
    }
    }

    关于javascript - jQuery 选择器元素如何也是 jQuery 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22010705/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com