2012-04-01 14 views
1

$()関数をオーバーロードできますか?
このようなパターン$( '$ name')を実装したい場合、文字列が '$'で始まり、次に定義された結果を返します。たとえば、

function getElementByVarName(varName) { 
    //return something of my own 
} 

var original$=$; 
$=function(param) { 
    if (typeof param === 'string' && param.startsWith('$')) { 
     return getElementByVarName(param.substring(1)); 
    } else { 
     original$(param); 
    } 
} 

これを行う最善の方法は何ですか。

答えて

0

あなたはnoConflict()

var j = $.noConflict(); 
(function($) { 
    $(function() { 
    //here your new function codes 

}); 
})(jQuery); 

そしてorginal $は今

ここDEMOあなたが実際に正常に動作する必要がありますスケッチしたもの

+0

どのように..あなたはどんなexapmleを置くことができます:あなたが実行して、元の関数に渡された様々な引数に対応したいと思うでしょうか?私はオリジナルの振る舞いが存在することを望む - 私は$の場合を上回るだけでよい。 – Naor

+0

プラグインまたはメソッドを記述する必要があります。私は、何か一般的なものを書くためにnoConflictをどのように使うことができるのかまだ分かりません。 – Naor

+0

更新されたコード、チェック – safarov

0

j機能を使用することができます!

EDIT:?

original$.apply(original$, arguments) 
+0

しかし、私は$が得ることができる多くのオプションがあると思います。そして、私はそれを書く良い方法があると信じています。 – Naor

+0

このように$は、fn、extend、その他のメソッドのようなすべてのメンバを緩めます。また、$(function(){})パターンでは、元の$がで使用されます。 – Naor

関連する問題