【发布时间】:2017-06-22 18:12:03
【问题描述】:
我尝试制作一个非常精简的“类似 jQuery”的选择器,但我无法让它适用于所有类,我尝试使用 for 循环,但由于“return new”它会中断循环。
JS
var $ = function(el){
var helpers = {
css: function(v){
(this.value).setAttribute('style',v);
},
replace: function(v){
(this.value).innerHTML = v;
console.log(this.value);
},
append: function(v){
(this.value).innerHTML = (this.value).outerHTML + ' ' + v;
}
};
function sel(el){
this.value = document.querySelector(el);
}
sel.prototype = helpers;
return new sel(el);
};
var sel1 = $('.sel1');
sel1.replace('<span>replaced</span>');
sel1.css("color:red");
HTML
<div class="sel1">test</div>
<div class="sel1">test</div>
<div class="sel1">test</div>
【问题讨论】:
-
不知道你为什么要费心使用一个类,但如果你这样做,请用首字母大写来命名它。
-
但是
sel被用作构造函数 -
有多个问题——你使用了
css()错误,你覆盖了jQuery而不是扩展它,但你为什么还要尝试扩展它呢?为什么不直接使用$('.sel1').css("color", "red");? -
@AluanHaddad—嗯,格式让我错过了 new,已修复。虽然找不到 for 循环...
-
要选择多个匹配项,请使用
querySelectorAll。这意味着this.value将是类似数组的,您需要将其作为类似数组的对象来处理。此外,您的append函数正在使用outerHTML,它应该(大概)使用innerHTML。
标签: javascript helpers