11 | | Trac uses [http://en.wikipedia.org/wiki/JQuery jQuery] library to ease development. jQuery uses $ as a name of its function for brevity and this may cause conflicts with other libraries. To avoid this jQuery library is used in non-conflicting state (really?) and code that uses $() function as jQuery definition is wrapped into javascript closures. |
| 13 | === jQuery === |
| 14 | |
| 15 | Trac makes heavy use of [http://en.wikipedia.org/wiki/JQuery jQuery] library to ease development. Access to this library contents is usually provided through the main function named $. $ as a name used for brevity and clarity. Unfortunately, other libraries may use it too and this may cause conflicts. $ in fact is just a shortcut for ''jQuery'' namespace and it is possible to use full name instead. But to avoid conflicts with other libraries $ shortcut should is turned off by switching jQuery into non-conflict mode with ''jQuery.noConflict()'' call. This is well explained in http://docs.jquery.com/Using_jQuery_with_Other_Libraries |
| 16 | |
| 17 | However, you will see many blocks in Trac that use $ for jQuery. They do it in their local scope defined by nameless function (or closure): |
| 18 | {{{ |
| 19 | (function($) { /* some code that uses $ */ })(jQuery) |
| 20 | }}} |
| 21 | There is a good description of closures and `(function(){})()` construct at http://ajaxian.com/archives/secrets-of-the-javascript-ninja-a-sneak-peak-for-ajaxians |