Hi,

I'll see if I can break down the syntax for you to illustrate what's  
going on:

1. Define a function. It should take one argument, called $:

function ($) {
   // Do stuff.
};

2. Since the function is anonymous (it doesn't have a name), you need  
to wrap it in brackets before invoking it:

(function ($) {
    // Do stuff.
})

2. Invoke the function right away, passing in jQuery as the value for $.

(function ($) {
    // Do stuff.
})(jQuery);

That's it. The syntax just defines an anonymous function and then  
invokes it right away. Now everything inside your anonymous function  
will have a private reference to the $ variable, and it will be bound  
to jQuery.

I hope this helps,

Colin

On 15-Oct-08, at 10:22 AM, 703designs wrote:

>
> I still have no idea what's going on syntactically, but now I know
> what's happening. This reinforced the concept (writes "Poop!" to the
> screen):
>
> (function(poop) {
>    document.write(poop);
> }) ("Poop!")
>
> On Oct 15, 10:00 am, "chris thatcher" <[EMAIL PROTECTED]>
> wrote:
>> It's very important becuase the symbol $ is used by other javascript
>> libraries and it can cause a conflict if you use it outside of the  
>> anonymous
>> function.
>>
>> For example another sloppy library might have a global definition
>>
>> var $ = function(){
>>    alert('Not Cool Man!');
>>
>> };
>>
>> then if you tried to use jQuery
>>
>> $("#mycoolapp").coolPlugin().beCool();
>>
>> and yould get the alert, 'Not Cool Man!'
>>
>> But jQuery doesnt stand for such sloppy nonsense so we do:
>>
>> jQuery.noConflict();
>>
>> and write our plugin still using $ like so:
>>
>> (function($){
>>    $.fn.coolPlugin = function(){
>>      //do cool stuff and feel free to use $ and know
>>      // it means jQuery and not the lame alert function
>>      //declared globally by sloppy library X
>>    }
>>
>>
>>
>> })(jQuery);
>> On Wed, Oct 15, 2008 at 9:09 AM, Mike Alsup <[EMAIL PROTECTED]> wrote:
>>
>>>> Plugins are supposed to use this:
>>
>>>> (function($) {
>>>>     // Plugin code
>>
>>>> }) (jQuery)
>>
>>>> I know what it does (allows the use of $ within the script), but  
>>>> how
>>>> does it actually work? Is it somehow casting the function object as
>>>> the jQuery object? It always seemed odd to me, and I haven't seen  
>>>> this
>>>> idiom elsewhere.
>>
>>> Consider this bit of code:
>>
>>> // declare a function that accepts an argument
>>> var myFn = function(myParam) {
>>>    // inside here I can use myParam freely
>>> };
>>> // call the function and pass an argument
>>> myFn(3);
>>
>>> Now, change what you call the parameter name and what you pass to  
>>> the
>>> function
>>
>>> var myFn = function($) {
>>>    // inside here I can use $ freely
>>> };
>>> // call the function and pass jQuery as the argument
>>> myFn(jQuery);
>>
>>> Now do it all in one step, as an anonymous function:
>>
>>> (function($) {
>>>    // inside here I can use myParam freely
>>> })(jQuery);
>>
>> --
>> Christopher Thatcher

---
Colin Clark
Technical Lead, Fluid Project
http://fluidproject.org

Reply via email to