我有疑问。我有自己的jquery类库。我称$或Meh(这就是所谓的Mehlib)和参数传递选择器。该库调用document.querySelectorAll
,返回nodeList。要使用此列表中的元素(节点)(我的意思是,为它们调用方法)我必须循环它们。我已经想到了这样:
$('.selector-class').each(function (el) {
el.style.display = 'none'; // hide element
});
Meh.fn = Meh.prototype = {
map: function (callback) {
var match = [];
for (var i = 0; i < this.length; i++) {
push.call( match, callback.call( this, this[i], i ) );
}
return match;
},
each: function (callback) {
return this.map(callback);
}
};
所以,这很好用,但让我们认为自己懒得好吗?
我想在循环(映射)到this
时“保存”当前元素并返回它。所以电话会议(上面的前3行)就是这样的:
$('.selector-class').each(function () {
this.style.display = 'none';
});
所以我仍然希望在映射节点时调用回调函数,但我不想将单个映射元素保存到回调的函数参数。
我试图在map方法中创建新的库实例,并且当前方法保存映射的重复单个节点,例如this = duplicated[i];
,但是有一个未被捕获的错误:Uncaught reference error: Invalid left-hand side in assignment
和Uncaught reference error: $ is not defined
错误。
答案 0 :(得分:0)
您不会分配到this
。
但是,您可以在调用函数的上下文中定义this
。
即:
someObject.someMethod(); // "this" is someObject
someFunction(); // "this" is typically "window" but may be "null"
someFunction.call(someThing, arg1, arg2); // "this" is someThing
在最后一个中,你在调用函数时提供了你想要的任何内容this
。
答案 1 :(得分:0)
变化:
callback.call( this, this[i], i )
要:
callback.call( this[i], this[i], i )
这样您就可以将元素作为thisArg
传递。