2011-01-11 7 views
3

JQuery要素にメソッドを追加することはお勧めできませんか?JQuery要素をカスタマイズする

例:

var b = $("#uniqueID"); 
b.someMethod = function(){}; 

更新

だけ明確にするために、私が操作するためのビジネス・ロジックをカプセル化するローカルJSオブジェクトにJSONデータを結合さJS-駆動のアプリケーションに取り組んでいます実際の基礎となるDOM要素オブジェクトは現在、関連するHTML要素への参照を格納します。実際には、jquery要素の特定のインスタンスをロジックとマージすることができると考えていました。

+1

実際にここで達成しようとしているものをさらに拡大できますか? –

答えて

2

を使用して、それを呼び出します。しかし、それはかなり無意味です。例:

$('body').someMethod = function(){}; 
console.log($('body').someMethod); // undefined 

新しい機能は、その要素のすべての選択肢ではなく、その選択肢にのみ割り当てられます。あなたの代わりに何をすべき

jQuery.prototypeのショートカットである、jQuery.fnに新しい機能を追加することです:

jQuery.fn.someMethod = function() { 
    if (this[0].nodeName == 'body') { 
     // do your function 
    } 

    return this; // preserve chaining 
}; 
0

また、jQueryプラグインを作成することもできます。あなたはプラグインをこのように定義することができます。

$.fn.someMethod = function(options) { 
    # ... 
}); 

はそれと本質的に間違って何もない、まあ$('body').someMethod();

2

問題は、あなたの関数は非常に一過性ということです。それ以上の質問とそれはなくなるでしょう。 $ .fn.someMethod = function(){}でjQueryオブジェクト自体を拡張することができ、このメソッドはすべてのクエリで使用できます。

$.fn.someMethod = function() {} 
var b = $("body"); 
b.someMethod(); 
関連する問題