【发布时间】:2016-01-03 16:52:04
【问题描述】:
我有问题。我有自己的类似 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 错误。
【问题讨论】:
-
为什么要重新发明轮子?有许多经过良好测试的 DOM 库(轻量级和重度)可以像 jQuery 一样工作。如果重点是学习,那就另当别论了,否则不要浪费你的时间。
-
因为我正在开发一个事物,如您所说,它是LIGHT,而不是几十kB。如果有很多汽车,为什么要制造自己的汽车(如果您有办法)?因为你想要你自己的,从螺丝钉到屋顶你都知道,而且你对它很感兴趣。
-
jQuery 的功能很轻巧,并且由对 javascript 和 DOM 有深入了解的人进行了广泛的测试和完善的文档记录和编写。尤其是当您询问有关对象范围的基本基本问题时,您的问题一无所有。
-
好的。当你不打算帮忙的时候,什么都不要说。 jQuery 对于它的作用很轻,你是对的,但也许我不需要这样的功能,如果我需要一个小脚本怎么办?所以不要比你真正的聪明。 **编辑:** 如果您想知道,我正在学习。这是我在学校的实践考试,有配额。您不能携带没有内容但大小为 100kB 的网站。
标签: javascript