【发布时间】:2015-06-21 08:14:21
【问题描述】:
1) 我的任务是在 Javascript 上实现 jQuery。 但由于某种原因,我的方法每个都不起作用。 比如我写的时候
$('.a').each(function (index) {$(this).append('<b>' + index + '</b>')})
返回
DOMException:无法在“文档”上执行“querySelectorAll”:“[object Object]”不是有效的选择器。
我也不能在其他函数中使用this.each。例如,如果我在 append 中使用 each 而不是 forEach,它将不起作用。
<script type="text/javascript">
(function() {
function $(selector) {
if (this instanceof $) return this.search(selector)
return new $(selector);
}
$.prototype = {
constructor: $,
length: 0,
search: function(selector) {
var that=this;
var elems=Array.prototype.slice
.call(document.querySelectorAll(selector));
elems.forEach(function(x,i){that[i]=x;});
this.length = elems.length;
return this;
},
append: function(text) {
if (text instanceof $) {
this[0].appendChild(text[0]);
for(var i = 1; i < this.length-1; i++) {
var p = text[0].cloneNode(true);
this[i].appendChild(p);
}
} else Array.prototype.slice
.call(this).forEach(function(x){
x.innerHTML = x.innerHTML + text;
});
return this;
},
each: function(callback){
for (var i=0;i<this.length;i++){
this[i]=callback.call(this,this[i])
};
return this;
},
}
window.$ = $;
}());
【问题讨论】:
-
“我的任务是在 Javascript 上实现 jQuery。” 呃....jQuery 是 实现了“ on" (in) JavaScript。
-
它正在处理小提琴这里是demo
-
顺便说一下,在选择
#id(单个元素)的选择器上使用.each()方法完全没有意义。 -
好的,我已经更正了使用它来上课。但感觉是一样的。我不能使用 $(this) 并且 this.each 无论如何都不能在其他方法中工作..
-
@ozil:你使用的是真正的 jQuery。 OP 正在尝试重新实现 jQuery,(开始)使用问题中的代码。
标签: javascript jquery this each