<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AddyOsmani.com &#124; Where Web Businesses Grow &#187; mootools</title>
	<atom:link href="http://addyosmani.com/blog/tag/mootools/feed/" rel="self" type="application/rss+xml" />
	<link>http://addyosmani.com/blog</link>
	<description>This is the home of Addy Osmani (Web Developer, Designer &#38; Author). Here you can find some great tips and tutorials on everything to do with web development and even a few useful code samples!</description>
	<lastBuildDate>Sun, 25 Jul 2010 14:41:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>jQuery Vs. JavaScript &#8211; The Masters Share Their Views On Vanilla JS</title>
		<link>http://addyosmani.com/blog/javascriptuncovered/</link>
		<comments>http://addyosmani.com/blog/javascriptuncovered/#comments</comments>
		<pubDate>Tue, 25 May 2010 00:03:05 +0000</pubDate>
		<dc:creator>Addy</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[chris coyier]]></category>
		<category><![CDATA[comparison]]></category>
		<category><![CDATA[david walsh]]></category>
		<category><![CDATA[debate]]></category>
		<category><![CDATA[james padolsey]]></category>
		<category><![CDATA[janko]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[javascript tutorial]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jquery team]]></category>
		<category><![CDATA[jquery tips]]></category>
		<category><![CDATA[jquery tricks]]></category>
		<category><![CDATA[jquery vs javascript]]></category>
		<category><![CDATA[marco kupier]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[should i learn javascript]]></category>
		<category><![CDATA[soh tanaka]]></category>

		<guid isPermaLink="false">http://addyosmani.com/blog/?p=724</guid>
		<description><![CDATA[&#160; We&#8217;ve got a really great post for you today guys. We&#8217;re going to explore whether it&#8217;s fundamentally important for designers and developers to understand how to use vanilla JavaScript and not just it&#8217;s derivative frameworks and libraries such as jQuery and MooTools. You might be asking &#8216;why?&#8217;, but read on and you&#8217;ll find out!. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://addyosmani.com/blog/javascriptuncovered/"> <img border="0" alt="" src="http://addyosmani.com/blog/wp-content/uploads/masters.jpg" style="border: 0px none; display: inline;" /> </a></p>
<p>&nbsp;</p>
<p>We&#8217;ve got a really great post for you today guys. We&#8217;re going to explore whether it&#8217;s fundamentally important for designers and developers to understand how to use vanilla JavaScript and not just it&#8217;s derivative frameworks and libraries such as jQuery and MooTools. You might be asking &#8216;why?&#8217;, but read on and you&#8217;ll find out!. Because this is a topic that can invoke passion on both sides of the debate, I&#8217;ve asked a few familiar names to join the discussion including David Walsh, Chris Coyier, Marco Kupier, Janko Javanovic and James Padolsey. All of these authors use jQuery regularly and are in a good position to advise on the pros and cons of knowing vanilla JS.<br />
<span id="more-724"></span> Before we begin, I&#8217;d like to take this opportunity to introduce James Jackson as a new member of the site team who&#8217;s contribution to this post was invaluable. So let&#8217;s get started!.</p>
<p>We all know that JavaScript frameworks have made it significantly easier to create rich animated effects and interfaces in our web pages &#8211; the type of thing which previously would have taken a lot longer if we were writing everything from scratch. I&#8217;ve seen coders creating sliding effects and javascript animation for over 10 years but until now, the effort required to achieve the effects through plain JS were sometimes considered too much hassle. Throw in cross-browser compatibility issues and you had a nightmare. jQuery, MooTools and other frameworks have changed this.</p>
<p>They haven&#8217;t altered the underlying javascript (it&#8217;s important to point this out), but they have introduced an easier layer of access to JS and it&#8217;s core functionality which was previously missing. </p>
<p>The question we&#8217;re asking today is whether it&#8217;s important for people who use libraries like jQuery to understand how&nbsp; the underlying javascript works. My personal opinion is that it is &#8211; whilst you can &quot;get by&quot; knowing how to use many of the basic functins jQuery offers, I think that there&#8217;s a certain power in knowing why a particular selector should be used over another or how to create something from scratch if jQuery doesn&#8217;t particularly support executing it well.</p>
<p>Let&#8217;s now delve into this topic further with James.</p>
<p><span style="font-size: x-large;"><strong>jQuery Vs. JavaScript</strong></span></p>
<p>jQuery is the key to the Web 2.0 lock.</p>
<p>I&#8217;m not afraid to say it, and furthermore, I&#8217;m not afraid to utilize a well known buzz term like, &quot;Web 2.0&quot;.&nbsp; Now, throughout this article, I&#8217;m going to be referencing jQuery quite a bit but that&#8217;s only because it&#8217;s my favorite Javascript library and the one I know the best.&nbsp; You could easily support any number of other libraries in a similar fashion.</p>
<p>That said, jQuery has helped a whole new generation of coders approach that ever alluring, and always intimidating field of web scripting.&nbsp; Browsers themselves are greatly measured by how well (and quickly!) they can support Javascript, and jQuery alike.</p>
<p>Most people reading this article are likely already quite familiar with jQuery, so I&#8217;d like to take a generous step backward and talk about what lies beneath it.&nbsp; Javascript itself.</p>
<p>We all understand Javascript in different ways, possible by the vast variability of its usefulness, but at its core Javascript really showcases itself as a powerful, easy to use scripting language that is more accessible than many of its influences.&nbsp; The notorious C, and its derivitaves, is often understood as a pipe dream to many modern developers and yet every single Javascript programmer utilizes a syntax almost indisinguishable from C&#8217;s without ever realizing it.</p>
<p>jQuery further blurs the lines with its own, innovative syntax which causes its biggest strength to also be its biggest weakness: approachability.&nbsp; Within any system, its a common rule of thumb that the simpler it is to use, the more removed from the source material it gets.&nbsp; jQuery is no exception.</p>
<p>A great deal of jQuery programmers I have known since its inception have been drawn to jQuery for its simplicity, betwitched by its seeming ability to allow the average web designer to magically produce Javascript effects that were otherwise impossible.&nbsp; When a client wants something to zoom across the screen, or to showcase a slideshow of photographs, jQuery answers the call.&nbsp; With a few script includes and some copying and pasting, its not only possible but extremely effective.&nbsp; With the overwhelming amount of customization that jQuery Plugin developers put into their modules, coders can even have intricate control over these effects without ever touching a single line of raw Javascript.&nbsp; jQuery takes care of all of it for you.</p>
<p>The problem herein lies in the moment that every late-night script surgeon will inevitably encounter: when something doesn&#8217;t do *exactly* what we need it to.&nbsp; We try tweaking the settings, finding an alternative plugin or scaring ourselves witless looking at the wall of code within the plugins themselves.</p>
<p>Don&#8217;t worry &#8212; we&#8217;ve all been there.&nbsp; This frustration, however, doesn&#8217;t have to halt our programming process and can instead offer an exciting challenge.&nbsp; If we understand the underlying code well enough, then virtually nothing is outside of our grasp within the world of Javascript.</p>
<p>Virtually any element within a web page, through the most popular operating system on the planet &#8212; the web browser, is accessible and can have its attributes changed.&nbsp; New elements can be created, manipulated and even removed from existence.&nbsp; Your keyboard becomes your brush and the browser becomes your canvas.&nbsp; Literally, even now with HTML5.</p>
<p>jQuery provides a proverbial &#8216;Paint by Numbers&#8217; tool for us, but when we need to break away from the lines and numerical digits, the paper beneath needs to be understood as well.</p>
<p>I&#8217;m sure it goes without saying, but I&#8217;d bet that the average jQuery enthusiast without extensive knowledge of Javascript doesn&#8217;t fully realize what jQuery is: a collection of Javascript.&nbsp; It&#8217;s not a new environment, it&#8217;s not an expansion pack; it&#8217;s a big pile of Javascript that draws a curtain between you and Javascript.&nbsp; All the web&#8217;s a stage, and the DOM is its players.</p>
<p>Most readers, who are familiar with jQuery know of the $() identifier.&nbsp; It allows you to select, or create/remove, any element on a webpage and manipulate it.&nbsp; If we want to grab an element like this:</p>
<pre name="code" class="javascript">
<div id="example">&nbsp;</div>
</pre>
<p>Then all we require to select it is:</p>
<pre class="javascript" name="code">
$(&quot;#example&quot;)</pre>
<p>From there, we can affect it in the multitude of ways that jQuery provides.&nbsp; What does this $() mean, though, exactly?&nbsp; How does it work?&nbsp; Is it magic?</p>
<p>In all actuality, $()&#8217;s usefulness, speed and versatility is bound only by your understanding of it. Before we delve further into this, lets remember that $() is a jQuery selector which can take more than one parameter, element IDs separated by commas and returns elements as objects in an array. For the sake of simplicity, let&#8217;s imagine that we&#8217;re just trying to get the very first element matched in the DOM with a particular ID (in jQuery this translates to $(&#8216;#example&#8217;)[0]) In this case, we could achieve this in standard vanilla JavaScript as follows:</p>
<pre class="javascript" name="code">
document.getElementById(&quot;example&quot;)</pre>
<p>Now, because Javascript has this functionality included right into its core, calling elements in this way greatly speeds up jQuery (tests show that getElementById is faster than standard selection in jQuery, however, this is only when you want to grab elements of a particular ID rather than a collection of elements).&nbsp; Because we&#8217;re making it so that jQuery doesn&#8217;t have to churn through functions and translators, and instead can just use Javascript&#8217;s built-in functionality to jump right to the item. Again, let&#8217;s remember that jQuery actually provides us with ways of accessing elements by much more advanced selection techniques, however, if you know exactly what you&#8217;re after, vanilla can help.</p>
<p>What does this mean to you?&nbsp; SPEED.&nbsp;</p>
<p>By understanding this aspect of Javascript, you can literally cut whole chunks of processing time out of your plugins and scripts. We should note however that jQuery&#8217;s use of the Sizzle selector engine has done it&#8217;s best to eliminate redundancy when looking up elements in the DOM, but there are still gains to be made for those that understand the underlying javascript.</p>
<p>The Animate feature of jQuery, as mentioned above, allows us to move any element on a page around the browser&#8217;s view port with only a few lines of code:&nbsp;</p>
<pre name="code" class="javascript">
$(&quot;#element&quot;).animate({ left: 100px; });</pre>
<p>This makes moving #element 100 pixels to the right extremely simple.&nbsp; However, let&#8217;s assume that we want to add a wavy-animation to our element, so it doesn&#8217;t mearly glide to the left but instead waves around (as though our precious #element has had a few to many Box Model Martini&#8217;s).&nbsp; This is possible with jQuery, of course, and there are even plugins available to accomplish it.&nbsp; Let&#8217;s further assume that either we have a very specific vision for how it will animate or (more likely) our client does.</p>
<p>Either way, time will be spent.&nbsp; Whether its time spent looking for the appropriate plugin, or writing the code ourself.</p>
<p>If we briefly break down jQuery.Animate, we get a very simple process: an event occurring within an interval or timer, selecting the element (by ID) and changing its &#8216;style.left&#8217; property incrementally through CSS.&nbsp;. Animate() of course supports a wide range of features including intervals, easing and other plugins, but if we wanted to take animate at it&#8217;s most basic and wanted to re-create this in basic javascript (moving an element across the screen), lets see how we cold create that code.</p>
<pre class="javascript" name="code">
var example = null; // object

function doMove() {
  example.style.left = parseInt(example.style.left)+1+'px';
  setTimeout(doMove,20); // call doMove in 20msec
}

function init() {
  example = document.getElementById('example'); // get the &quot;example&quot; object
  example.style.left = '0px'; // set its initial position to 0px
  doMove(); // start animating
}

window.onload = init;
</pre>
<p>&nbsp;</p>
<p>And we&#8217;re done.&nbsp;Now obviously, there is a LOT more going on behind the animate function &#8211; it supports chaining, easing plugins and a greater level of modification than simply moving an item across the screen, but in its most basic form, that&#8217;s what we&#8217;re trying to achieve.</p>
<p>This is a more advanced example, so what if you want to mimic a much simpler function of jQuery?&nbsp; Say, the hide() command?</p>
<p>&nbsp;</p>
<pre name="code" class="javascript">
$(&quot;example&quot;).hide();</pre>
<p>&nbsp;</p>
<p>This comes in really handy, as you can hide elements that are not currently needed in your application.&nbsp; What does this function *do* exactly, though?&nbsp; As with so many things, the better we understand something, the better we can innovate.</p>
<p>Much of what makes Web Apps so functional (and, let&#8217;s admit it, pretty) is affecting their CSS attributes: their color, their opacity, their location on the screen, etc.&nbsp; The hide() function affects one of the most used CSS attributes: display.</p>
<p>To translate the above hide command, we could also imagine it like this:&nbsp;</p>
<p>&nbsp;</p>
<pre name="code" class="javascript">
 $(&quot;#example&quot;).css(&quot;display&quot;,&quot;none&quot;);</pre>
<p>&nbsp;</p>
<p>Of course, the hide() command gives you more control over the effect, but by using the css() command instead, we can now do some pretty interesting things, such as:</p>
<p>Blend an object in with the text, rather than putting it on its own line:</p>
<p>&nbsp;</p>
<pre name="code" class="javascript">
 $(&quot;#example&quot;).css(&quot;display&quot;,&quot;inline&quot;);</pre>
<p>&nbsp;</p>
<p>The opposite, take an inline element (e.g. &lt;strong&gt;) and make it take up a whole line:</p>
<p>&nbsp;</p>
<pre name="code" class="javascript">
 $(&quot;#example&quot;).css(&quot;display&quot;,&quot;block&quot;);</pre>
<p>&nbsp;</p>
<p>That&#8217;ll get someone&#8217;s attention!</p>
<p>Far too often, a jQuery developer will find themselves poking and prodding a bit of jQuery code, trying to get it to behave properly; when their answer is just a css() command away.</p>
<p>This is not to say that you have to choose between Javascript or jQuery, though.&nbsp; By combining the two, we can still use jQuery for what it&#8217;s best at: selecting elements and manipulating their attributes.&nbsp; For example, instead of using the whole line of document.getElementById(&quot;element&quot;) we can save ourselves some code by using $(&quot;#element&quot;).&nbsp; jQuery has a built-in checker for elements selected by that and will essentially translate it to our full &quot;getElementById&quot; line, anyhow, so we are literally just using it to abbreviate our code.</p>
<p>This is just the tip of the iceberg.&nbsp; Technically speaking, jQuery is a collection of snippets that allow someone to abide by the D.R.Y. (Don&#8217;t Repeat Yourself) method of programming.&nbsp; I urge you, however, to take advantage of jQuery, but not completely depend on it to code.</p>
<p>jQuery is a tool.&nbsp; Javascript is the garden.&nbsp; Together, they can allow us to cultivate endless abundance if utilized in harmony.</p>
<p>Knowing jQuery (among many other scripting libraries) in this modern world of web development is crucial.&nbsp; It provides quicker turn around times, opens your code up to a vast world of other developers and makes your code efficient, and easy to read.&nbsp; However, even the best tools are only as useful as the person who wields them.</p>
<p>If we have not only a better understanding of our tools, but also our environment, then we can help usher in &#8212; if not pioneer &#8212; the next era of web developers.</p>
<p>&nbsp;</p>
<p><span style="font-size: x-large;"><strong>Thoughts from:</strong></span><strong></p>
<p><span style="font-size: large;">David Walsh</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</p>
<p><img width="200" vspace="10" hspace="10" height="200" align="left" style="padding: 10px;" alt="" src="http://addyosmani.com/blog/wp-content/uploads/david.jpg" /></p>
<p>&quot;Learning JavaScript is absolutely paramount to becoming an effective Web Designer or Developer.&nbsp; While the JavaScript libraries do as much as possible to ease the pain of some of JavaScript&#8217;s more time-consuming tasks, libraries cannot anticipate their every use.&nbsp; Without proper knowledge of JavaScript, a developer can spend hours debugging an issue that should really only take a few moments.&nbsp; Spending the time to become a &#8216;Vanilla JS&#8217; expert will allow a developer to more easily learn *any* of the popular frameworks, thus making that developer far more valuable.&quot;</p>
<p>&nbsp;</p>
<p><span style="font-size: large;"><strong>Chris Coyier</strong></span></p>
<p><img width="200" vspace="10" hspace="10" height="200" align="left" style="padding: 10px;" alt="" src="http://addyosmani.com/blog/wp-content/uploads/chris.jpg" /></p>
<p>&quot;I&#8217;d love to tell you all about how life will be better if you learn and understand JavaScript before you learn libraries. Or at least, that you should go back and get those fundamentals after starting out with libraries. Here is reality for me though: I&#8217;m terrible at vanilla JavaScript. It would be pretty hard for me to try and get day-to-day design work done if I couldn&#8217;t use jQuery. In fact, I probably just wouldn&#8217;t do it, and stick to design and markup. I&#8217;d love to go back and get those fundamentals, and I probably will over time, and it will make me better, but I&#8217;m also living proof that you can still get the job done being a library junkie.&quot;<span style="font-size: large;"><br />
</span></p>
<p>&nbsp;</p>
<p>&nbsp;<span style="font-size: large;"><strong>Janko Javanovic</strong></span></p>
<p><img width="200" vspace="10" hspace="10" height="200" align="left" style="padding: 10px;" alt="" src="http://addyosmani.com/blog/wp-content/uploads/janko.jpg" />&quot;I will be glad to give an opinion about js/jQuery. I agree that developers should have at least some understanding of JavaScript. jQuery and similar libraries might be a good way to get people interested in JavaScript in general. But in the other hand it might actually be a stumbling block &#8211; it&#8217;s so easy to use jQuery that many don&#8217;t need a deeper understanding of JS.</p>
<p>Lack of knowledge become obvious when developers need to modify/extend some jQuery code. They don&#8217;t understand it fully. And then they cry for help. So I&#8217;d say it would be better for them to learn a few things about JS and try figure things out themselves. Otherwise, chances are they will never learn.&quot;</p>
<p><span style="font-size: large;"><strong>Marco Kuiper</strong></span></p>
<p><img width="200" vspace="10" hspace="10" height="200" align="left" style="padding: 10px;" alt="" src="http://addyosmani.com/blog/wp-content/uploads/marco.jpg" /></p>
<p>&quot;Very interesting topic, especially since I learned jQuery before learning actual JavaScript myself (the only JavaScript I knew before that were the &quot;mouse following clock&quot; and &quot;disable right click&quot; stuff &#8211; you know, back in the days&#8230;). But at the time I started to get a hang of jQuery, I did wanted to learn more about JavaScript. Why? Basically because I wanted to get the maximum out of jQuery.</p>
<p>For example, take a look at speed. I learned that using an ID selector ( $(&quot;#myelement&quot;) ) is around 100 times faster than a class selector ( $(&quot;.myelement&quot;) ) . This is because the ID selector maps to the native &quot;getElementByID()&quot; JavaScript function. The same is for using tag selectors ( $(&quot;body&quot;) ), since that maps to the native &quot;getElementsByTagName()&quot; JavaScript function. The class selector loops through all the objects in the DOM to find the specified elements. There are more speed tricks for jQuery that you would know if you knew how JavaScript works.</p>
<p>I truly love the way how you can create elements in jQuery 1.4; Simply apply an element name to the jQuery core method and you&#8217;re ready to go ( $(&quot;&lt;div /&gt;&quot;) ). Before that way was implemented in jQuery, you could simply use the native JavaScript method &quot;document.createElement()&quot;. Although it isn&#8217;t as great as the way jQuery creates elements, it did allow you to create elements using JavaScript. Using those kind of methods even before it was added to the jQuery core, and you were sure to be one step ahead of the rest.</p>
<p>The last example I want to show you, is the use of parameters. The jQuery &quot;.bind()&quot; method attaches behavior to a specified element. The first parameter is the eventType, like &quot;click&quot;, &quot;mouseenter&quot; and &quot;mouseleave&quot;. How would you know which eventTypes you could specify, if you don&#8217;t know the implementation of JavaScript (&quot;object.onmouseenter&quot; etc.)? And why do you use all those curly brackets (when creating objects) and using functions as parameters ( $(&quot;#myelement&quot;).click(function() { var doStuff; } ); )? All that kind of stuff is JavaScript that you&#8217;re using. If you&#8217;re using it, use it and learn it correct.</p>
<p>So, if you want to get better at jQuery, take a look &quot;under the hood&quot; to see the JavaScript engine that is working hard for you. Learn and master it!&quot;</p>
<p>&nbsp;</p>
<p><span style="font-size: large;"><strong>James Padolsey</strong></span></p>
<p><img width="200" vspace="10" hspace="10" height="200" align="left" style="padding: 10px;" alt="" src="http://addyosmani.com/blog/wp-content/uploads/james.jpg" /></p>
<p>&quot;I agree that there is a problem with the terminology used throughout the jQuery community. jQuery uniquely appeals to people with minimal programming experience and that makes it all the more complicated to explain it in the right way. I&rsquo;ve always been a proponent of learning JavaScript and the DOM API before any library. I&rsquo;m not saying that this is the only way; obviously there are people who have learnt it the other way round, and they&rsquo;re just as proficient as you or I. But, still, there is a difficulty to overcome, and I think there&rsquo;s a lot of progress that needs to be made in the way that jQuery&rsquo;s paradigms and implementation are explained to beginners. I think you&rsquo;re right about &ldquo;wrapping&rdquo; being misleading, but, it is a helpful metaphor which gives beginners confidence when using jQuery.</p>
<p>Let&rsquo;s face it! Most people that use jQuery are not looking to become an expert. They don&rsquo;t care about its internals or what really happens when they call the magical dollar. They just want it to work. The people who really want to dig into it will do so by their own means.</p>
<p>I&rsquo;ve used some of these metaphors myself, such as &ldquo;caching&rdquo; &mdash; it can be misleading but most &ldquo;web&rdquo; people understand the term. If I said &ldquo;reference&rdquo; instead then I&rsquo;d have to explain what a reference is and how objects in JavaScript are different to primitive types, and how an identifier is simply a pointer to an object in &ldquo;memory&rdquo;&hellip; it gets complicated very quickly.</p>
<p>jQuery is one of those cool technologies that gives you tremendous power right off the bat! That&rsquo;s what appeals to beginners, I think. They feel powerful; they feel that they pretty-much understand jQuery and how it works. We wouldn&rsquo;t want to shatter that confidence by the realisation that they, in fact, still have a lot to learn about jQuery, JavaScript, and the DOM.</p>
<p>Don&rsquo;t get me wrong. I really do support the idea that beginners should be taught correctly right from square one, but I think it needs to be done delicately. You can&rsquo;t drown them with complicated words and ideas; that&rsquo;ll surely scare them away.&quot;</p>
<p>I would say that learning APIs and abstractions such as the DOM, jQuery, Mootools, Prototype, Dojo, ExtJS and others is quite pointless for the beginner because there are literally thousands of libraries, toolkits and frameworks that the beginner _could_ pick up&#8230;. Obviously the DOM is central but at the end of the day it&#8217;s just a bunch of method-names and argument signatures that you have to remember.</p>
<p>What needs to be taught is **JavaScript** &#8230; or rather, ECMAScript.. the real thing &#8212; i.e. hand out a copy of the ES3 specification. (actually, that&#8217;d definitely scare people)</p>
<p>The problem with learning JS is that most of the really good resources are simply not geared towards beginners. Websites like w3schools and &quot;javascript.about.com&quot; ARE geared towards beginners but their content is crap &#8212; it&#8217;ll get an individual past the noob phase but not any further. They need to be learning about primitives, objects, variable declaration, function declaration, function expressions, scope, closure, operator precedence, booleans&#8230; blah blah blah&#8230; The rhino book is what they all really need.</p>
<p>Most of the people using jQuery don&#8217;t even want to &quot;program&quot;, per se; they just want to add cool&#8217;ness to their websites. Telling them they defined a global instead of a local var, and they should probably use function declarations because it makes debugging easier is pointless because they really couldn&#8217;t care less. The devs that really care about code quality and all the stuff we love are already on the path to enlightenment.&quot;</p>
<p>&nbsp;</p>
<p><strong><span style="font-size: large;">Conclusions</span></strong></p>
<p>And that&#8217;s it guys. What are your thoughts on the topic?. Do <em>you</em> think that it&#8217;s important to have an understanding of basic JavaScript?. We&#8217;d all love to have an open discussion on this and we&#8217;d really like to hear your opinions in the comments section below.  If you liked the post, remember that you can easily share it with your friends and colleagues just be clicking the <a class="retweet" href="http://addyosmani.com/blog/javascriptuncovered/">jQuery Vs. JavaScript &#8211; The Masters Share Their Views On Vanilla JS</a> button. I hope you found this post useful guys!</p>
<p>.</p>
]]></content:encoded>
			<wfw:commentRss>http://addyosmani.com/blog/javascriptuncovered/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>22 Excellent Examples of Advanced jQuery UI&#039;s in action</title>
		<link>http://addyosmani.com/blog/22-excellent-examples-of-advanced-jquery-uis-in-action/</link>
		<comments>http://addyosmani.com/blog/22-excellent-examples-of-advanced-jquery-uis-in-action/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 04:14:31 +0000</pubDate>
		<dc:creator>Addy</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[advanced]]></category>
		<category><![CDATA[core]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[jquery core]]></category>
		<category><![CDATA[jquery ui]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[yui]]></category>

		<guid isPermaLink="false">http://addyosmani.com/blog/22-excellent-examples-of-advanced-jquery-uis-in-action/</guid>
		<description><![CDATA[jQuery is one of the most widely adopted javascript frameworks in the wild with millions of developers around the World using it daily in their projects. As a result of it&#8217;s growth, developers have been able to let their imagination run wild when it comes to designing exciting new interfaces that are both rich, exciting [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://3.bp.blogspot.com/_M_BKbuAia5k/Sp4BCtI03jI/AAAAAAAAAIc/1bzq6DsICsY/s1600-h/22.jpg"><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://3.bp.blogspot.com/_M_BKbuAia5k/Sp4BCtI03jI/AAAAAAAAAIc/1bzq6DsICsY/s400/22.jpg" border="0" /></a></p>
<p><b>     <br /></b></p>
<p><strong>jQuery</strong> is one of the most widely adopted <strong>javascript frameworks</strong> in the wild with millions of developers around the World using it daily in their projects. As a result of it&#8217;s growth, developers have been able to let their imagination run wild when it comes to designing <strong>exciting new interfaces that are both rich, exciting and intuitive</strong>.</p>
<p>&#160;</p>
<p> In this post I’m going to share the <strong>top 22</strong> pages using jQuery that I felt deserved a mention &#8211; you’ll everything from fun but humble new ways to offer your users a Captcha to a completely javascript based Robot animation. Heard about the Google API but haven’t had the chance to play around with it yet? </p>
<p> <span id="more-37"></span>
<p>&#160;</p>
<p>There’s an even a good <strong>Google Maps jQuery</strong> example included.&#160; Why not take 20 minutes out of your evening to play around with some of the <strong>demos </strong>below? You could be pleasantly surprised at what you learn ; )</p>
</p></div>
<p>&#160;</p>
<ol>
<li><a href="http://yensdesign.com/tutorials/musicplayer/?&amp;sitereferring=blarnee.com">A completely interactive music player powered by mouse gestures and your keyboard</a></li>
<li><a href="http://www.mattryall.net/demo/atlassian-vis/contributors/?&amp;sitereferring=blarnee.com">A a tree graph visualisation linking commenters and blog post authors done using Processing.js &#8211; a great example of real-time image processing using HTML5</a></li>
<li><a href="http://www.webdesignbeach.com/beachbar/ajax-fancy-captcha-jquery-plugin/?&amp;sitereferring=blarnee.com">A really nice Ajax based Captcha using draggable components and jQuery</a></li>
<li><a href="http://www.benjaminsterling.com/wp-content/files/porfolio1/?&amp;sitereferring=blarnee.com">The vertical-sliding Portfolio &#8211; a great example of how to use jQuery for animations effectively</a></li>
<li><a href="http://olbertz.de/jquery/googlemap.html">jQuery and GoogleMaps &#8211; how to do use Zoom effects in the wild</a></li>
<li><a href="http://designshack.co.uk/articles/navigation/creating-a-jquery-dashboard/?&amp;sitereferring=blarnee.com">A jQuery dashboard like the one found on a Mac</a></li>
<li><a href="http://fmarcia.info/jquery/tetris/tetris.html">How to use jQuery to create an online version of Tetris</a></li>
<li><a href="http://abeautifulsite.net/notebook_files/58/demo/?&amp;sitereferring=blarnee.com">A slick, fast jQuery based File-tree for navigation</a></li>
<li><a href="http://www.filamentgroup.com/examples/charting/?&amp;sitereferring=blarnee.com">Dynamic editable charts using jQuery &#8211; learn how to create pie charts on the fly!</a></li>
<li><a href="http://nettuts.s3.amazonaws.com/152_jqueryBook/source/source/index.html">Create an Amazon.com style Book Sliding widget</a></li>
<li><a href="http://net.tutsplus.com/tutorials/javascript-ajax/create-a-twitter-like-load-more-widget/">An awesome Twitter-like load more widget from David Walsh</a></li>
<li><a href="http://test.creativityden.com/cartoon_landscape/">How to create an animated Landscape for your site intro using jQuery</a></li>
<li><a href="http://nettuts.s3.amazonaws.com/065_jQueryTextSlider/Text%20Slider%20Demo/index.html">The jQuery text-resizer &#8211; resize text in a given form field using a slider component</a></li>
<li><a href="http://malsup.com/jquery/cycle/adv.html">The Picture cycle plugin &#8211; create amazing animated image effects using minimal code</a></li>
<li><a href="http://nettuts.s3.amazonaws.com/196_jquery/index.htm">Create a beautiful filterable portfolio of websites or other content using jQuery (recommended)</a></li>
<li><a href="http://www.flowplayer.org/tools/scrollable.html">Scrollable &#8211; a nice scroller for making any div content scroll smoothly within a carousel</a></li>
<li><a href="http://css-tricks.com/jquery-robot/?&amp;sitereferring=blarnee.com">A jQuery animated Robot cartoon powered completely by JavaScript and CSS</a></li>
<li><a href="http://web-kreation.com/demos/Sliding_login_panel_jquery/?&amp;sitereferring=blarnee.com">A slick sliding login panel</a></li>
<li><a href="http://yensdesign.com/tutorials/tabs/?&amp;sitereferring=blarnee.com">Create a smooth tabbled menu like the type found in many Web 2.0 wordpress templates</a></li>
<li><a href="http://www.open-lab.com/mb.ideas/index.html#">The m.b ideas jQuery menu using Ajax for content retrieval</a></li>
<li><a href="http://jqueryfordesigners.com/demo/radio1.html">The BBC Radio 1 Zoom tabs &#8211; used to zoom out images using your mouse</a></li>
<li><a href="http://jyoseph.com/social/?&amp;sitereferring=blarnee.com">A jQuery version of the Tumblr OpenSocial sharing widget</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://addyosmani.com/blog/22-excellent-examples-of-advanced-jquery-uis-in-action/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
