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

Reply via email to