Javascript 在迭代器中返回element.parentNode

Javascript 在迭代器中返回element.parentNode,javascript,jquery,Javascript,Jquery,我正试图为自己构建一个类似jquery的实用程序库,这正是我主要使用jquery的东西 我有以下代码: function jLib(selector) { this.elements = selector.nodeType ? [ selector ] : document.querySelectorAll(selector); this.each = function(cb) { for(var i = 0; i < this.elements.length; i+

我正试图为自己构建一个类似jquery的实用程序库,这正是我主要使用jquery的东西

我有以下代码:

function jLib(selector) {

  this.elements = selector.nodeType ? [ selector ] : document.querySelectorAll(selector);


  this.each = function(cb) {
    for(var i = 0; i < this.elements.length; i++) {           
        var el = this.elements[i];
        cb.call(this, el);
    }
  };


  this.parent = function() {
    this.each(function(element) {
       return element.parentNode;
    });
  };

  this.addClass = function(className) {

        this.each(function(element) {
            className.split(' ').forEach(function(_className) {
                element.classList.add(_className);
            });
        });

        return this;
    };

}


new jLib('.has_parrent').parent().addClass('border');

您需要使
parent()
返回一个新的
jLib
对象,该对象包含以下父元素

函数isArray(obj){
返回数组.isArray(obj);
}
功能jLib(选择器){
this.elements=selector.nodeType?[selector]:(isArray(selector)?selector:document.querySelectorAll(selector));
this.each=函数(cb){
for(var i=0;i
.border{
边框:1px纯红;
边缘底部:5px;
}

帕伦特
帕伦特

请在问题中发布您的代码,而不是指向它的链接。“作为例外”??如果您想编写一个类似jQuery的库,使用链接,您无法避免构建构造函数或工厂包装元素,不仅从选择器(如您所做的)开始,而且从元素开始。您可以在jQuery(它很复杂)或类似的库(它也很复杂)中查看它是如何完成的。您的
每个
函数对返回值都没有任何作用,那么您为什么要
从回调返回
?听起来您实际上想要实现
map
。另外,您的
父方法
不会
返回任何内容,因此您不能期望它返回任何内容chainable@Hiero这就是所谓的“链接”。阅读我之前的评论。但Bergi说的完全正确,您应该使用
map
而不是
每个
,这样您就可以创建父元素的数组了?这看起来像jQuery^^
new jLib('.has_parrent').parent().addClass('border');