2017-05-21 21 views
0

に新しいメソッドを取り付けます私はこのようなDIVに呼び出すことができ、簡単なプロトタイプを作成しようとしていますjQueryオブジェクト

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

これは私が試したものです:

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

しかし、JavaScriptが例外として、html()はメソッドではありません。私はObjectの代わりにHTMLDivElementを試しましたが、それは助けになりませんでした。すべてのポインタ?

+0

@AndrewLi感謝を。私はこれを試してみましょう。 –

+0

jQueryのプロトタイプメソッドを定義しようとしていますか? – PRAISER

答えて

1

あなたは間違ったプロトタイプを変更している - あなたはObjectのプロトタイプを変更しようとしているが、それはjQueryオブジェクトではなく、JavaScriptのオブジェクトだから、あなたはjQueryのプロトタイプを変更する必要があります。したがって、通常のJavaScriptオブジェクトにはhtmlというメソッドがないため、エラーです。

fnプロパティはプロトタイプのためだけ別名であるため、すべてのjQueryメソッドはjQueryオブジェクトのfnプロパティに取り付けられている。

jQuery.fn === jQuery.prototype 

したがって、jQueryオブジェクトのプロトタイプにメソッドを追加するために、

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

または$

あなたはjQueryオブジェクトのプロパティ fn(プロトタイプ)、のいずれかにアクセスする必要が
$.fn.processHtml = function() { 
    ... 
} 

これはプロトタイプに関数を追加し、jQueryオブジェクトのすべてのインスタンス間でメソッドを共有します:

$(selector).processHtml(); 
関連する問題