我创建了一个构造函数_ ()
,并在原型中编写了几个方法,即“枚举”方法,覆盖了类或id HTML元素。
有一种方法需要引用NodeList
的特定元素(例如itElement(2)
)。我使用链函数(_ ('.test'). item (2))
。
使用addMiClass
方法,我想将我的类添加到完全元素(2),但该类已添加到所有元素_ ('.test')
。
如何取消第一个函数(_ ('test'))
的结果?
'use strict';
function _(arg) {
if (!(this instanceof _)) {
return new _(arg);
}
var self = this;
//we can transmit a string
if (typeof arg === "string") {
this.elements = arg.split(',');
this.element = [];
for (var i = 0; i < this.elements.length; i++) {
this.element.push(document.querySelectorAll(this.elements[i]));
}
}
//if transmit object
if (typeof arg === "object") {
this.element = [];
for (var i in arg) {
// var index = Object.keys(arg).indexOf(i);//for gettinf index
this.element.push(document.querySelectorAll(arg[i]));
}
}
}
_.prototype = {
//method for bust elements
enumeration: function(elements, callback) {
for (var i = 0; i < elements.length; i++) {
[].forEach.call(elements[i], callback);
}
return this;
},
//method for adding class
addMyClass: function(nameClass) {
this.enumeration(this.element, function(el) {
// do whatever
el.classList.add(nameClass);
});
return this;
},
//for specific elements
itElement: function(element) {
element -= 1;
for (var i = 0; i < this.element.length; i++) {
[].forEach.call(this.element[i], function(el, i) {
if (i === element) {
return el;
}
});
}
return this;
}
}
//////////////////use my object
_('.first').itElement(2).addMyClass('test');
<div class="first">ff</div>
<div class="first">ff</div>
<div class="first">ff</div>
<div class="second">ff2</div>
<div class="third">ff3</div>
答案 0 :(得分:0)
你不能return this
,你必须返回一个包含你想要的元素的新实例。 (顺便说一下,尝试从return
回调中forEach
是徒劳的。)