Das $ in JS

FrankWST

Erfahrenes Mitglied
Hallo,

kann mir jemand von Euch näher bringen, wie der $-Operator in JS funktioniert!?

Z.B. wird er auch für jQueryUI-Library verwendet (siehe Anhang).

Was ich dabei nicht verstehe ist: Diesen Operator scheinen alle JS-Libs zu verwenden. Wie funktionert denn da die Zuordnung?

Also was ich evtl. verstehen würde wäre statt
"$('#date').datepicker();"
statt dessen
"jQueryUI.('#date').datepicker();" oder evtl.
"('#date').jQueryUI.datepicker();"

Aber "$"?
Wo ist da der Zusammenhang mit der jQueryUI?

Vielen Dank,
Frank:confused:
 

Anhänge

  • jQueryUI.jpg
    jQueryUI.jpg
    46,3 KB · Aufrufe: 41
Moin Frank,

dies $ ist kein Operator, es ist ein ganz normales Zeichen, mehr nicht.
Sehe das $ einfach als Variablennamen an, oder im Falle von jQuery als Funktionsnamen, mehr ist es wirklich nicht.
 
Zuletzt bearbeitet:
Jo, ist es.

In der Javascript-Referenz von Netscape steht:
Variable name. It can be any legal identifier.

Der Kern von Javascript ist standardisiert und wird auch als ECMAScript bezeichnet.
Darüber gibt es also festgelegte Regeln, hier nachzulesen: http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf

Und dort steht dies:
The dollar sign ($) and the underscore (_) are permitted anywhere in an IdentifierName.

Die älteste einsehbare Version von ECMAScript ist von 1998, und schon da ist das $ erlaubt, wenn auch "intended for
use only in mechanically generated code"
(was immer damit auch gemeint sein soll :D )

SelfHTML ist also nicht auf dem Laufenden.
 
Zuletzt bearbeitet:
Das heisst aber doch, dass jQueryUI keine anderen neben sich duldet!?

Nö,
das heisst, dass dem Macher von jQuery nicht entgangen ist, dass es auch andere Frameworks gibt, welche dies $ benutzen, und dass er darauf Rücksicht nimmt, indem er eine Möglichkeit bietet, andere Frameworks zusammen mit jQuery in einem Dokument zu verwenden.
 
Nö,
das heisst, dass dem Macher von jQuery nicht entgangen ist, dass es auch andere Frameworks gibt, welche dies $ benutzen, und dass er darauf Rücksicht nimmt, indem er eine Möglichkeit bietet, andere Frameworks zusammen mit jQuery in einem Dokument zu verwenden.

Richtig, aber jQueryUI tut genau das nicht (und viele Andere auch nicht).
Ich habe z.B. noch ein Framework für sortierbare Tabellen. Das verwendet auch $. Und damit haben wir den Salat!? Ich kann dieses nicht zusammen mit jQueryUI verwenden.
 
Mmmh, da hast du wohl etwas falsch gemacht, auch mit jQueryUI geht das, kannst es gerne probieren:
Code:
<!DOCTYPE html>
<html>
<head>
  <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
  <style type="text/css">
    #draggable,#clickable { width: 100px; height: 70px; background: silver;border:1px dotted #000; margin:12px;}
  </style>
  <script>
  jQuery.noConflict();
  jQuery(document).ready(function() {
    jQuery("#draggable").draggable();
  });
  </script>
</head>
<body> 
<div id="draggable">Drag me with jQueryUI</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js"></script>  
<div id="clickable">Click me with PrototypeJS</div>
<script>
  $('clickable').observe('click', function(){$(this).setOpacity(($(this).getOpacity()==1)?.5:1);});
</script>
</body>
</html>
 
Zuletzt bearbeitet:
"intended for use only in mechanically generated code"(was immer damit auch gemeint sein soll :D )

Das bedeutet, dass es nur in generiertem code verwendet werden sollte. Also wie z.B. die ".Designer"-Dateien im MS-VisualStudio, die nicht manuell editiert werden sollten, da sie das Ergebnis der Manipulationen in der graphischen Oberfläche sind.
 
Zurück