2012-04-01 7 views
1

Kann ich die $() Funktion überladen?
Ich möchte ein solches Muster $ ('$ name') implementieren, wo die Zeichenfolge mit '$' beginnt, dann gebe ich mein definiertes Ergebnis zurück. zum Beispiel:

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); 
    } 
} 

Was ist der beste Weg?

Antwort

0

können Sie noConflict()

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

}); 
})(jQuery); 

Und orginal $ jetzt j Funktion ist

hier DEMO

+0

Wie .. Können Sie jede exapmle setzen? Ich möchte, dass die ursprüngliche Verhaltensweise existiert - ich muss nur den Fall von $ übergehen. – Naor

+0

Ich muss ein Plugin oder eine Methode schreiben. Ich verstehe immer noch nicht, wie ich noConflict verwenden kann, um etwas Generisches zu schreiben. – Naor

+0

aktualisierten Code, check – safarov

0

Was haben Sie skizzierte sollte gut funktionieren in der Tat nutzen!

EDIT: Sie werden für verschiedene Argumente an die ursprüngliche Funktion übergeben aufnehmen möchten, tun:

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

Aber ich denke, es gibt viele Optionen, die $ bekommen kann .. und ich glaube, es gibt eine bessere Möglichkeit, es zu schreiben. – Naor

+0

So wird $ alle seine Mitglieder wie FN verlieren, erweitern und andere Methoden. Darüber hinaus wird im $ (function() {}) Muster das Original $ in verwendet. – Naor

Verwandte Themen