将新方法附加到jQuery对象

时间:2017-05-21 20:34:36

标签: javascript jquery

我正在尝试创建一个简单的原型,我可以在这样的DIV上调用:

$('#mydiv').processHtml();

这就是我的尝试:

Object.prototype.processHtml = function() {
     var html = this.html();
     // call ajax.... 
}

但JavaScript抛出的异常是html()不是一种方法。我尝试HTMLDivElement代替Object,但它没有帮助。有什么指针吗?

1 个答案:

答案 0 :(得分:1)

您正在修改错误的原型 - 您正在尝试修改Object的原型,但您必须修改jQuery的原型,因为这样做了#39; s 一个jQuery对象,而不是一个JavaScript对象。因此错误,因为常规JavaScript对象没有方法html

所有jQuery方法都附加到jQuery对象的fn属性,因为fn属性只是原型的别名:

jQuery.fn === jQuery.prototype

因此,要向jQuery对象的原型添加方法,您必须访问jQuery对象的fn属性(原型):

jQuery.fn.processHtml = function() {
    ...
}

$

$.fn.processHtml = function() {
    ...
}

这会将函数添加到原型中,并在jQuery对象的所有实例之间共享该方法:

$(selector).processHtml();