首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重写appendChild()

重写appendChild()
EN

Stack Overflow用户
提问于 2014-12-02 02:08:23
回答 1查看 809关注 0票数 1

我正在尝试覆盖appendChild方法,这样我就可以控制动态创建的元素,并在插入到页面之前根据需要修改它们。我尝试使用这个示例代码,只是想看看是否可以这样做:

代码语言:javascript
复制
var f = Element.prototype.appendChild;
Element.prototype.appendChild = function(){f.apply(this, arguments); };

当我尝试在下面的代码之后加载examples.However时,它适用于简单的jquery:

代码语言:javascript
复制
<script> 
    var f = Element.prototype.appendChild;
    Element.prototype.appendChild = function(){f.apply(this, arguments); };
</script>

<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js'></script>

我得到了这个错误:

代码语言:javascript
复制
Uncaught TypeError: Cannot read property 'selected' of undefined jquery.min.js:4
Uncaught TypeError: Cannot read property 'appendChild' of undefined

那么,为什么它不能与jquery一起工作呢?有没有一种安全的方法覆盖appendChild?

EN

回答 1

Stack Overflow用户

发布于 2015-03-19 20:50:40

不建议覆盖本机函数,但如果这样做,请确保同时返回附加的元素,以防止使用本机"appendChild“函数的返回值的代码出现问题:

代码语言:javascript
复制
window.callbackFunc = function(elem, args) {
  // write some logic here
}
window.f = Element.prototype.appendChild;
Element.prototype.appendChild = function() {
    window.callbackFunc.call(this, arguments);
    return window.f.apply(this, arguments);
};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27234489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档