Javascript库中每个循环元素
Javascript library each looping elements
我有问题。我有自己的类似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
时,我想"保存"一个当前元素并返回它
$('.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
也有错误。
您不分配给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
。
更改:
callback.call( this, this[i], i )
收件人:
callback.call( this[i], this[i], i )
因此,您将元素作为thisArg
传入。
相关文章:
- PHP:同时循环元素粘在一起
- 按数据属性循环元素并替换值
- Javascript/Jquery 循环元素
- for 循环元素的执行时间比内部 AJAX 调用可以响应的要快
- jQuery:对于循环元素 attr 更改,所有元素都有最后一个元素 attr
- 以延迟的方式循环元素
- 通过使用JQuery加载外部文件来循环元素
- Javascript库中每个循环元素
- 无法访问嵌套的循环元素
- JQuery中的循环元素
- 如何循环元素&数数
- 如何在jQuery事件中引用循环元素
- 循环元素's在DOM中的ID
- 循环元素不起作用
- Javascript循环元素并使用WebdriverIO单击链接
- 循环元素's列表创建一个没有jQuery的转盘
- 调用.onclick函数中方法中选定的循环元素
- 循环元素json数组
- 获取jQuery中每个循环元素的父元素
- 如何在jQuery中循环元素并同时替换