我最近意识到在学习使用jQuery编写JavaScript时,我学习了JS语法,但我从未真正学过JS。所以这里的项目是仅使用本机JavaScript来模仿jQuery方法。
我开始使用全局窗口对象的函数,它返回一组我常用的方法:
window.iq = (function(){
return {
id: function(id) {
return document.getElementById(id);
},
// Several other similar methods
})();
所以,现在我可以像这样调用那个方法:
iq.id('elementID') //and so forth
我在编写一个模仿jQuery .click()
的方法时遇到了麻烦。我可以将一个点击处理程序附加到一组元素上,如下所示:
[].forEach.call(iq.selAll('a'), function(el) { // selAll is the short version of document.querySelectorAll()
el.addEventListener('click', function(){
// do stuff
});
我无法弄清楚如何编写一个方法来执行该操作,因此每次我想在元素或元素集上触发click事件时,我都可以写:
iq.click('element', function(){
// do stuff
});
以下是我的非工作尝试:
click: function(el) {
return [].forEach.call(iq.selAll(el), function(el) {
el.addEventListener('click');
});
}
与往常一样,我非常感谢任何建议或指导。
答案 0 :(得分:2)
您的代码缺少click
方法的第二个参数,即实际的处理函数:
click: function(el, handler) {
return [].forEach.call(iq.selAll(el), function(el) {
el.addEventListener('click', handler, false);
});
}