Warum probierst du es denn nicht einfach aus.
Wie kommt es, dass sich die jQueryUI-Lib dafür zuständig fühlt?
Dafür zuständig fühlen tut sich überhaupt niemand. Ein funktionsaufruf ist kein "In den Raum rufen und abwarten welches Framework es entgegen nimmt", sondern ein Aufruf einer Funktion die durch seinen Namen festgelegt wurde. In diesem Fall ist der Name der funktion ganz einfach $. Somit wird immer das zu letzt eingebundene Framework das $ verwenden angesprochen.
Hier noch ein Beispiel:
Code javascript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| //jQuery Framework
var $ = function(selektor)
{
return {
selektor:selektor,
datepicker:function()
{
alert('Ich bin die jQuery datepicker function');
},
fooBar:function()
{
alert('ich bin die fooBar function die es nur in jQuery gibt');
}
};
}
//Irgendein anderes Framework z.B. mootools
var $ = function(selektor)
{
return {
selektor:selektor,
datepicker:function()
{
alert('Ich bin die mootools datepicker function');
}
};
}
$('#irgendwas').datepicker();
$('#irgendwas').fooBar(); |
Das gibt ein alert mit :
Ich bin die mootools datepicker function
Und eine Fehlermeldung mit:
Fehler: $("#irgendwas").fooBar is not a function
In order to understand recursion, one must first understand recursion.
Und genau das ist die Krux: Fast alle arbeiten mit $. Wahrscheinlich ist das cooler als ein klarer Name wie z.B. "xyzFramework"!?
Ob es dafür einen bestimmten Grund gibt kann ich dir nicht sagen. Eventuell liegt es ganz einfach daran das frameworks auch den Schreibaufwand reduzieren wollen. Oder sie haben gegenseitig abgeschaut und nachgemacht. Oder sie wollen mehr oder weniger dazu zwingen nur ihr framework zu benutzen.
Wie wir weiter oben ja sehen, macht es jQuery gut: Die bieten ein "noConflict()" an. Damit kann man dann nämlich klar adressieren (mit "jQuery.")
Wenn alle klare Namen verwenden würden statt $ würde es auch nicht diese "ich überschreibe die letzte Lib"-Effekte geben.
Oder bin ich da auf dem Holzweg?
Ja jQuery ist da vorbildlicher als seine Kollegen und nein du bist nicht auf dem Holzweg
In order to understand recursion, one must first understand recursion.
Wie könnte man denn sowas lösen? Globales ersetzen des $ durch was anderes in der Lib selbst wird wohl nicht gehen...
Es ist relativ einfach.
Am Beispiel jQuery müsste man nur folgende Zeile ändern
Code javascript:
1
2
3
| window.jQuery = window.$ = jQuery;
//Um zum Beispiel jQueryFrameWork anstatt $ verwenden zu können muss man nur folgendes machen:
window.jQuery = window.$ = window.jQueryFrameWork = jQuery; |
Am Beispiel mootools muss man folgendes einfügen um z.B. mootoolsFrameWork verwenden zu können.
Code javascript:
1
2
3
4
5
| if (window.mootoolsFrameWork == null) Window.implement({
mootoolsFrameWork: function(el, nc){
return document.id(el, nc, this.document);
}
}); |
Die jeweilige $ zuordnung kann man dann ja auch rauswerfen.
Gut möglich das ich was übersehen habe aber in einem schnell Test hats funktioniert.
In order to understand recursion, one must first understand recursion.