我想通过HTMLElement#appendChild将我的DomBuilder附加到html。 并替换为jQuery #html
我试过这个
var Fragment = function() {
};
Fragment.prototype = Object.create(DocumentFragment.prototype);
Fragment.prototype.append = function(el) {
if (el instanceof DomBuilder) {
return this.append(el.build());
}
if (el instanceof Element) {
this.appendChild.(el);
}
return this;
};
$dom.frag = function() {
var f = new Fragment();
return f;
};
但
$dom.frag().append(document.createElement('a'))
抛出'未捕获的TypeError:非法调用'。 我需要超级对象(DocuemtnFragment)才能做到这一点。
第二次尝试:
$dom.frag = function() {
var f = document.createDocumentFragment();
f.append = function(el) {
if (el instanceof DomBuilder) {
return this.append(el.build());
}
if (el instanceof Element) {
this.appendChild(el);
}
return this;
};
return f;
};
正常工作,但这会创建功能'追加'对于每个$ dom.frag()调用。
第三次尝试:
DocumentFragment.prototype.append = function(el) {
if (el instanceof DomBuilder) {
return this.append(el.build());
}
if (el instanceof Element) {
this.appendChild(el);
}
return this;
};
$dom.frag = function() {
var f = document.createDocumentFragment();
return f;
};
这项工作正常,并且共享功能'追加'。 但这样可以吗?没有跨浏览器问题?
此网站将支持ie9~ /其他现代浏览器