Javascript 在迭代器中返回element.parentNode
我正试图为自己构建一个类似jquery的实用程序库,这正是我主要使用jquery的东西 我有以下代码: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+
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');