1) Ho un compito di implementare jQuery Javascript. Ma per qualche ragione il mio metodo non funziona. Per esempio quando scrivopiccola implementazione di jquery
$('.a').each(function (index) {$(this).append('<b>' + index + '</b>')})
esso restituisce
DOMException: impossibile eseguire 'querySelectorAll' su 'Documento': '[object Object]' non è un selettore valido.
, inoltre, non posso usare this.each
all'interno di altre funzioni. Ad esempio se avessi usato ciascuno invece di forEach
all'interno dell'app non avrebbe funzionato.
<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.$ = $;
}());
* "Ho un compito di implementare jQuery Javascript" * Er .... jQuery * ** è *** implementato "on" (in) JavaScript. –
sta funzionando su fiddle qui è [demo] (http://jsfiddle.net/n4aspu8p/) – ozil
Dal modo in cui FYI utilizza il metodo '.each()' su un selettore che sta selezionando un '# id' (che è un singolo elemento) non ha alcun senso. –