<?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>Steve Reynolds Blog &#187; jQuery UI</title>
	<atom:link href="http://www.reynoldsftw.com/tag/jquery-ui/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.reynoldsftw.com</link>
	<description>Being Generalist.</description>
	<lastBuildDate>Wed, 28 Jul 2010 20:36:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Custom 404 with jQuery and jQuery UI</title>
		<link>http://www.reynoldsftw.com/2009/09/custom-404-with-jquery-and-jquery-ui/</link>
		<comments>http://www.reynoldsftw.com/2009/09/custom-404-with-jquery-and-jquery-ui/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 16:10:08 +0000</pubDate>
		<dc:creator>Steve Reynolds</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[404]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[jQuery UI]]></category>

		<guid isPermaLink="false">http://www.reynoldsftw.com/?p=1514</guid>
		<description><![CDATA[
			
				
			
		
So I thought I would have a whizz at creating a custom 404 error message page, seeing as they&#8217;re so dull! What better way to do this, than with some sexy jQuery UI animations, and a snipsy bit of jQuery? This tutorial isn&#8217;t limited to 404 error pages, you can use this animation technique anywhere. [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F09%2Fcustom-404-with-jquery-and-jquery-ui%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F09%2Fcustom-404-with-jquery-and-jquery-ui%2F&amp;source=SteveReynolds&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>So I thought I would have a whizz at creating a custom 404 error message page, seeing as they&#8217;re so dull! What better way to do this, than with some sexy jQuery UI animations, and a snipsy bit of jQuery? This tutorial isn&#8217;t limited to 404 error pages, you can use this animation technique anywhere. Here&#8217;s the premise &#8211; a 404 that&#8217;s breaking, the page is literally cracking into bits:</p>
<div id="attachment_1515" class="wp-caption aligncenter" style="width: 310px"><a href="http://demos.reynoldsftw.com/glorious-404/404.html" target="_blank"><img class="size-full wp-image-1515 " title="cracking-up-404" src="http://www.reynoldsftw.com/wp-content/uploads/2009/09/cracking-up-404.png" alt="Click to see my cracking demo" width="300" height="140" /></a><p class="wp-caption-text">Click to see my cracking demo</p></div>
<p>You&#8217;ve got to <a href="http://demos.reynoldsftw.com/glorious-404/404.html" target="_blank">check it out</a> above! You like? Here is how I did it.</p>
<h3>HTML &amp; CSS</h3>
<p>First off I built a basic HTML structure &#8211; this obviously has key parts missing, but for the sake of the demo this is what we&#8217;ve got:</p>
<p>
<pre class="brush: xml;">&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;404 - File Not Found - Reynoldsftw.com&lt;/title&gt;

		&lt;script src=&quot;js/jquery-1.3.2.min.js&quot;&gt;&lt;/script&gt;
		&lt;script src=&quot;js/jquery-ui-1.7.2.custom.min.js&quot;&gt;&lt;/script&gt;
		&lt;script src=&quot;js/jquery-background.js&quot;&gt;&lt;/script&gt;
		&lt;script src=&quot;js/controller.js&quot;&gt;&lt;/script&gt; 

		&lt;LINK href=&quot;css/style.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;
	&lt;/head&gt;
	&lt;body&gt;
	&lt;div id=&quot;error_code&quot;&gt;404&lt;/div&gt;
	&lt;div id=&quot;error_status&quot;&gt;File Not Found&lt;/div&gt;
	&lt;div id=&quot;error_message&quot;&gt;We're sorry you are seeing this page, please don't break the site again!&lt;/div&gt;

	&lt;div id=&quot;crack&quot;&gt;&lt;/div&gt;
	&lt;div id=&quot;crack_overlay&quot;&gt;&lt;/div&gt;
	&lt;/body&gt;
&lt;/html&gt;</pre>
</p>
<p>Some DIVS for the text content, and also a couple of empty DIVs that will hold two images. One being the crack, the second being an overlay .png file which we will animate over the top. Here&#8217;s the CSS for those two image DIVS:</p>
<p>
<pre class="brush: css;">#crack
{
	z-index: 1;
	position: absolute;
	width: 200px;
	height: 600px;
	background-image: url(../images/crack.png);
	left: 520px;
	top: 0px;
}

#crack_overlay
{
	z-index: 1000;
	position: absolute;
	width: 200px;
	height: 600px;
	background-image: url(../images/crack_over.png);
	background-position: 0px -1100px;
	left: 520px;
	top: 0px;
}</pre>
</p>
<p>A couple of things to note &#8211; the overlay image is extremely large in height, therefore I am positioning it in the DIV so that in that position, the crack image/DIV underneath it cannot be seen (background-position-y: -1100px;). Both DIVs are absolutely positioned, as well as the overlay having a z-index higher than that of the image/DIV underneath. Okay, let&#8217;s &#8220;crack&#8221; on&#8230;</p>
<h3>jQuery and jQuery UI</h3>
<p>Next we have the jQuery UI and jQuery code. I&#8217;ve chosen to use the &#8220;shake&#8221;, &#8220;bounce&#8221; and &#8220;pulsate&#8221; jQuery UI effects, setting their options quite tightly so that the movements made are very minimal &#8211; giving the wall shaking, earthquakey effect. I&#8217;ve also set some timers to randomly shake various elements, as well as re-position the overlay so that more and more of the crack is revealed.</p>
<p><center><script type="text/javascript"><!--
google_ad_client = "pub-6415056921376217";
google_ad_channel = "in-ad-unit-hor";
google_ui_features = "rc:0";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "0066CC";
google_color_text = "";
google_color_url = "0066CC";

//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</center></p>
<p>
<pre class="brush: jscript;">var coord = -1125;

$(document).ready(function() {

	setTimeout(&quot;shake()&quot;, 2000);
});

function reveal()
{
	setTimeout(&quot;moreCrack(coord)&quot;, 200);
}

function shake()
{
	coord = coord + 50;
	if(coord &lt; -125)
	{
		$(&quot;#crack&quot;).effect(&quot;shake&quot;, {distance: 1}, 40, reveal);
		$(&quot;#error_code&quot;).effect(&quot;bounce&quot;, {distance: 5}, 50);
		$(&quot;#error_status&quot;).effect(&quot;pulsate&quot;, {times: 2}, 50);
	} else {

		$(&quot;#crack_overlay&quot;).hide();	

	}
}

function randomXToY(minVal,maxVal,floatVal)
{
  var randVal = minVal+(Math.random()*(maxVal-minVal));
  return typeof floatVal=='undefined'?Math.round(randVal):randVal.toFixed(floatVal);
}

function moreCrack(coord)
{
	$(&quot;#crack_overlay&quot;).animate({backgroundPosition:&quot;(0 &quot; + coord + &quot;)&quot;});
	setTimeout(&quot;shake()&quot;, randomXToY(3500, 5000));
}</pre>
</p>
<p>Okay, so on the document.ready() call, I&#8217;m setting up a timer to call the shake() function. This will then call a chain of functions to shake and reveal more of the crack (moreCrack()). I then start over again, but call shake at a random interval so that it is less predictable.</p>
<p>Finally, the shake() function keeps an eye on the position of the overlay DIV and stops the entire thing once there is no more to reveal.</p>
<h3>Download the solution</h3>
<div id="attachment_86" class="wp-caption alignleft" style="width: 70px"><a href="http://www.reynoldsftw.com/wp-content/uploads/2009/09/glorious-4041.zip"><img class="size-full wp-image-86" title="Download Icon" src="http://www.reynoldsftw.com/wp-content/uploads/2009/01/drop-box-icon.png" alt="Download Solution" width="60" height="60" /></a><p class="wp-caption-text">Download Solution</p></div>
<p>As ever, here is the code for you all bundled up. Feel free to have a play and let me know how it goes. There are a few ways looking at it at how to streamline some of the code, but I thought I&#8217;d get it out there for you all to play with for now! Probably more soon.</p>
<p>Anyway &#8211; click the icon to the left or <a href="http://www.reynoldsftw.com/wp-content/uploads/2009/09/glorious-4041.zip" target="_blank">download here</a>. Please let me know if you use it, or do something even cooler with it &#8211; stick an url in the comments!</p>
<h3>Tools to help you learn&#8230;</h3>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<thead></thead>
<tbody>
<tr>
<td width="33%" align="center" valign="top">
<div id="attachment_613" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/1847196705?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1847196705"><img class="size-full wp-image-613" title="jquery13" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/jquery13.jpg" alt="Learning jQuery 1.3" width="101" height="132" /></a><p class="wp-caption-text">Learning jQuery 1.3</p></div></p>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=1847196705" border="0" alt="" width="1" height="1" /></td>
<td width="33%" align="center" valign="top">
<div id="attachment_770" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/B00154JDAI?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B00154JDAI"><img class="size-full wp-image-770" title="kindle" src="http://www.reynoldsftw.com/wp-content/uploads/2009/03/kindle.jpg" alt="Amazon Kindle 2" width="101" height="132" /></a><p class="wp-caption-text">Amazon Kindle 2</p></div></p>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=B00154JDAI" border="0" alt="" width="1" height="1" /></td>
<td width="33%" align="center" valign="top">
<div id="attachment_612" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/1847195121?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1847195121"><img class="size-full wp-image-612" title="jquery-ui" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/jquery-ui.jpg" alt="jQuery UI 1.6" width="101" height="132" /></a><p class="wp-caption-text">jQuery UI 1.6</p></div></p>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=1847195121" border="0" alt="" width="1" height="1" /></td>
</tr>
</tbody>
</table>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F09%2Fcustom-404-with-jquery-and-jquery-ui%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F09%2Fcustom-404-with-jquery-and-jquery-ui%2F&amp;source=SteveReynolds&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://www.reynoldsftw.com/2009/09/custom-404-with-jquery-and-jquery-ui/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Q&amp;A With jQuery UI Release Manager Richard D. Worth</title>
		<link>http://www.reynoldsftw.com/2009/03/qa-with-jquery-ui-release-manager-richard-d-worth/</link>
		<comments>http://www.reynoldsftw.com/2009/03/qa-with-jquery-ui-release-manager-richard-d-worth/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 16:00:32 +0000</pubDate>
		<dc:creator>Steve Reynolds</dc:creator>
				<category><![CDATA[Q&A]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery UI]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Richard D. Worth]]></category>

		<guid isPermaLink="false">http://www.reynoldsftw.com/?p=1118</guid>
		<description><![CDATA[
			
				
			
		
If you haven&#8217;t seen it before, jQuery UI is an awesome layer to the already brilliant jQuery library enabling you to build great, intuitive and interactive Rich Internet Applications. In this Q&#38;A session, Richard D. Worth &#8211; Release Manager with the jQuery UI project answers some questions about his early programming days and the future [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F03%2Fqa-with-jquery-ui-release-manager-richard-d-worth%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F03%2Fqa-with-jquery-ui-release-manager-richard-d-worth%2F&amp;source=SteveReynolds&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><img class="alignright size-full wp-image-1125" title="f242401e6163745fcd773103f794f7fe" src="http://www.reynoldsftw.com/wp-content/uploads/2009/03/f242401e6163745fcd773103f794f7fe.jpg" alt="f242401e6163745fcd773103f794f7fe" width="80" height="80" />If you haven&#8217;t seen it before, jQuery UI is an awesome layer to the already brilliant jQuery library enabling you to build great, intuitive and interactive Rich Internet Applications. In this Q&amp;A session, Richard D. Worth &#8211; Release Manager with the jQuery UI project answers some questions about his early programming days and the future of jQuery UI.</p>
<h3>Can you give me a brief history of your programming days? Where did it all start?</h3>
<p>I started programming on an Apple ][e. Basic. Next was assembly on a 286. I was really into demos (if anyone remembers those). My older brothers got me started and we would program on whatever PC my dad upgraded to each year or two. Sometimes we'd even have two, so I'd get to play more freely on the older one. 386, 486. I remember the day we got a math co-processor. Oh, and the turbo button! I programmed in pascal, c, pov-ray, qbasic. What else was fun? BBSes, 1200 baud modem, nic.funet.fi, prodigy, compuserve, Mosaic 1.0. HTML. Ahhh. Thanks for the trip.</p>
<h3>How did you get involved with jQuery UI? What's the story behind that?</h3>
<p>About two years ago I found jQuery and got involved pretty quickly. I started answering questions on the mailing list, created the FAQ, set up <a href="http://planet.jquery.com/" target="_blank">http://planet.jquery.com/</a>. After a couple months I heard news that a new version of Interface was being worked on, called jQuery UI, headed by <a title="Q&amp;A With jQuery Creator Paul Bakaus" href="http://www.reynoldsftw.com/2009/03/questions-with-jquery-ui-creator-paul-bakaus/" target="_blank">Paul Bakaus</a>. At the time I was working on a drag-and-drop tree (the reason I looked for and eventually found jQuery) and a table editor (where you could drag and select TDs, convert them to THs, merge and split cells, etc.). My first contribution to jQuery UI was some documentation and testing for drag and drop. It came pretty easily, because I was making use of them for both these plugins I needed. I had found an unequaled community in jQuery, and was excited about being a part of a new sub-community growing within it: jQuery UI.</p>
<h3>What's next on your things to do list with jQuery UI?</h3>
<p>Testing. Lots of test to be written. Static (markup) tests, visual (interactive) tests, unit tests. My eventual goal is full coverage, obviously. Lots to do yet. Also, I'm really anxious for TestSwarm.</p>
<p>Specifications. We've got a marvelous Development and Planning wiki now (<a href="http://wiki.jqueryui.com/" target="_blank">http://wiki.jqueryui.com/</a>). We're not just writing code when we have cool ideas. We're planning and designing. I'd like to see us get our specifications to a point where they're sufficient for all tests, code, and documentation to be written from them. Even for existing plugins in so-called "maintenance mode". At this point we're still doing a lot based on current implementation. That can take a lot of time and energy, and too often involves reverse engineering. Plus, it's hard to know what someone might be depending on, or foresee an unintended change. The code alone cannot speak for how a component should behave.</p>
<p>New development, perhaps. It's been a while since I've done any new development on jQuery UI. We've been quite focused as a team for the last 9 months on the 1.7 release. In the end it had only one new plugin, progressbar, and it's the simplest one by a long shot. Now that that's out and we're nearing 1.6 final and 1.7.2, we're taking a look toward 1.8, 1.9, and 2.0. We've got some exciting plugins in the works. I'm particularly interested in working on tree, grid, and menu.</p>
<h3>How are you building in performance enhancements into jQuery UI - How do you approach that kind of work?</h3>
<p>I did a bit early on. <a title="Q&amp;A With jQuery Creator Paul Bakaus" href="http://www.reynoldsftw.com/2009/03/questions-with-jquery-ui-creator-paul-bakaus/" target="_blank">Paul</a> did a lot more. I remember sitting down with selectables at one point. I created a page with like 1,000 items. I wanted to be able to drag the selectable lasso as quickly as possible and have all those items light up and down without a skip. I just kept working on it until the numbers got down. Profiling, refactoring, testing on different platforms. Rinse. Repeat.</p>
<h3>Would you say that jQuery, jQuery UI, Mootools and other libraries are forming the basis for what will be the next generation of web applications for the next few years to come? I hesitate to say web 3.0... As the uptake of these gets greater and greater and the feature-set gets even better, the backbone of next generation apps is starting to form I believe. Do you see it that way or do you see a different journey for jQuery and jQuery UI?</h3>
<p>I definitely see that. I'm not sure I had that vision when I started contributing to jQuery UI (I just needed a control or two). But it didn't take long. It's clear that Rich Internet Applications are a valuable and growing area of the web, and of software development in general. One of my personal goals, and I think I share it with the rest of the team, is to make Rich Internet Application development as elegantly simple as jQuery has made Ajax and the DOM.</p>
<h3>What is it about programming that gives you the bug? Is it the need to solve problems? Or the satisfaction in being able to solve complex problems for example...</h3>
<p>I absolutely love problem solving. I always have. I also like the artistic and creative design aspect of programming. For me, too, there's just something about being able to communicate effectively, powerfully even, in the same language with both humans and machines. Code speaks.</p>
<h3>Now that IE8 is well and truly out there, what are your thoughts on the new browser? Any significant issues with jQuery UI?</h3>
<p>I'm quite pleased with what we have in Internet Explorer 8. It's a great web browser. Will IE6 die tomorrow? Will IE8 be my principal development browser? No. But it's a great browser for all users, and it's finally got some decent development tools built-in. So, I'm happy. As far as issues with jQuery UI, no, I haven't seen anything yet. But we kept a pretty close eye on it through the betas.</p>
<h3>What are your tools of choice to get the job done?</h3>
<p>Notepad, UltraEdit, Firefox, Firebug, VirtualBox, TortoiseSVN</p>
<h3>If you hadn't gotten involved with jQuery UI, what do you think you would be doing instead?</h3>
<p>TortoiseGIT</p>
<h3>If you could give one tip to new jQuery UI developers, what would it be?</h3>
<p>Think and talk about the design. Don't just point at an existing plugin's source code, whether you wrote it or not. Dissect it, analyze it, rip it apart, compare it in detail with everything else out there. Do your homework. And then present what you find in such a way that others can benefit from all that effort.</p>
<p><strong>Richard can be found on Twitter as <a href="http://twitter.com/rworth" target="_blank">@rworth</a>, or via his blog at <a href="http://rdworth.org/blog/" target="_blank">http://rdworth.org</a></strong></p>
<h3>Tools to help you learn...</h3>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<thead></thead>
<tbody>
<tr>
<td width="33%" align="center" valign="top">
<div id="attachment_613" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/1847196705?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1847196705"><img class="size-full wp-image-613" title="jquery13" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/jquery13.jpg" alt="Learning jQuery 1.3" width="101" height="132" /></a><p class="wp-caption-text">Learning jQuery 1.3</p></div>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=1847196705" border="0" alt="" width="1" height="1" /></td>
<td width="33%" align="center" valign="top">
<div id="attachment_770" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/B00154JDAI?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B00154JDAI"><img class="size-full wp-image-770" title="kindle" src="http://www.reynoldsftw.com/wp-content/uploads/2009/03/kindle.jpg" alt="Amazon Kindle 2" width="101" height="132" /></a><p class="wp-caption-text">Amazon Kindle 2</p></div>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=B00154JDAI" border="0" alt="" width="1" height="1" /></td>
<td width="33%" align="center" valign="top">
<div id="attachment_612" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/1847195121?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1847195121"><img class="size-full wp-image-612" title="jquery-ui" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/jquery-ui.jpg" alt="jQuery UI 1.6" width="101" height="132" /></a><p class="wp-caption-text">jQuery UI 1.6</p></div>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=1847195121" border="0" alt="" width="1" height="1" /></td>
</tr>
</tbody>
</table>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F03%2Fqa-with-jquery-ui-release-manager-richard-d-worth%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F03%2Fqa-with-jquery-ui-release-manager-richard-d-worth%2F&amp;source=SteveReynolds&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://www.reynoldsftw.com/2009/03/qa-with-jquery-ui-release-manager-richard-d-worth/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Live MySQL Database Search with jQuery</title>
		<link>http://www.reynoldsftw.com/2009/03/live-mysql-database-search-with-jquery/</link>
		<comments>http://www.reynoldsftw.com/2009/03/live-mysql-database-search-with-jquery/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 13:59:21 +0000</pubDate>
		<dc:creator>Steve Reynolds</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery UI]]></category>
		<category><![CDATA[Live Search]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.reynoldsftw.com/?p=1055</guid>
		<description><![CDATA[
			
				
			
		
Live search is starting to become more and more mainstream. With the advent of Ajax the ability to carry out searches without leaving the page have obviously started to appear more and more. The trouble with live searching though, is it can be quite resource intensive. Every keystroke in theory returns a bunch of search [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F03%2Flive-mysql-database-search-with-jquery%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F03%2Flive-mysql-database-search-with-jquery%2F&amp;source=SteveReynolds&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Live search is starting to become more and more mainstream. With the advent of Ajax the ability to carry out searches without leaving the page have obviously started to appear more and more. The trouble with live searching though, is it can be quite resource intensive. Every keystroke in theory returns a bunch of search results, perhaps relevant, perhaps not. On a busy site this could have quite an impact.</p>
<p>In this tutorial I will demonstrate the same basic theory, live searching <strong>(<a href="http://demos.reynoldsftw.com/live-search/" target="_blank">demo</a>)</strong> &#8211; however I am <span style="text-decoration: underline;">not</span> showing the user any results until they execute the search. Instead, I am responding with <strong>a search result count</strong> in a live manner (after every key stroke), but actually returning the results on a button click or [ENTER] key press.</p>
<div id="attachment_1058" class="wp-caption aligncenter" style="width: 490px"><a href="http://demos.reynoldsftw.com/live-search/"><img class="size-full wp-image-1058" title="picture-2" src="http://www.reynoldsftw.com/wp-content/uploads/2009/03/picture-2.png" alt="Live MySQL searching with jQuery" width="480" height="87" /></a><p class="wp-caption-text">Live MySQL searching with jQuery (Click for demo)</p></div>
<p>What this does is cut down on the amount of data whizzing around after every keystroke, cutting down database activity and more importantly bandwidth reduction. It also gives the user some relevant feedback on their search so they can see if their search term actually matches any results in the first place before submitting it in a very economical fashion.</p>
<h2 style="text-align: center;"><a href="http://demos.reynoldsftw.com/live-search/" target="_blank"><strong>Click Here For Demo</strong></a></h2>
<h3><span id="more-1055"></span>The HTML</h3>
<p>First up, lets create the basic HTML page. A couple of containers for the form elements and a container for the results.</p>
<pre class="brush: xml;">&lt;div id=&quot;form&quot;&gt;

&lt;input type=&quot;text&quot; id=&quot;searchbox&quot; name=&quot;searchbox&quot; /&gt;

&lt;div id=&quot;buttonContainer&quot;&gt;

&lt;a class=&quot;button&quot; id=&quot;submitbutton&quot; href=&quot;#&quot;&gt;&lt;span id=&quot;buttontext&quot;&gt;Search&lt;/span&gt;&lt;/a&gt;

&lt;/div&gt;

&lt;/div&gt;

&lt;div id=&quot;resultsContainer&quot;&gt;&lt;/div&gt;
</pre>
<h3>The PHP</h3>
<p>The PHP part of this is very simplistic in its approach, it is returning HTML data rather than XML or JSON objects &#8211; it&#8217;s up to you to take that next step. The script has two roles, 1 &#8211; To return a result count number, and 2 &#8211; to return search results. You could seperate these into two scripts if you want, but I&#8217;ve put them into one for now&#8230;</p>
<pre class="brush: php;">if(isset($_GET['query'])) { $query = $_GET['query']; } else { $query = &quot;&quot;; }

if(isset($_GET['type'])) { $type = $_GET['type']; } else { $query = &quot;count&quot;; }

if($type == &quot;count&quot;)

{

$sql = mysql_query(&quot;SELECT count(url_id)

FROM urls

WHERE MATCH(url_url, url_title, url_desc)

AGAINST('$query' IN BOOLEAN MODE)&quot;);

$total = mysql_fetch_array($sql);

$num = $total[0];

echo $num;

}

if($type == &quot;results&quot;)

{

$sql = mysql_query(&quot;SELECT url_url, url_title, url_desc

FROM urls

WHERE MATCH(url_url, url_title, url_desc)

AGAINST('$query' IN BOOLEAN MODE)&quot;);

while($array = mysql_fetch_array($sql)) {

$url_url = $array['url_url'];

$url_title = $array['url_title'];

$url_desc = $array['url_desc'];

echo &quot;&lt;div class=\&quot;url-holder\&quot;&gt;&lt;a href=\&quot;&quot; . $url_url . &quot;\&quot; class=\&quot;url-title\&quot; target=\&quot;_blank\&quot;&gt;&quot; . $url_title . &quot;&lt;/a&gt;

&lt;div class=\&quot;url-desc\&quot;&gt;&quot; . $url_desc . &quot;&lt;/div&gt;&lt;/div&gt;&quot;;

}

}</pre>
<p><center><script type="text/javascript"><!--
google_ad_client = "pub-6415056921376217";
google_ad_channel = "in-ad-unit-hor";
google_ui_features = "rc:0";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "0066CC";
google_color_text = "";
google_color_url = "0066CC";

//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</center></p>
<p>You&#8217;ll need to ignore the table and column names in the MySQL query, however you get the idea. For the &#8220;count&#8221; section the query is simply returning a result count to the browser, e.g. &#8220;3&#8243;. For the &#8220;results&#8221; section the script is returning chunks of HTML that our jQuery will consume and display on the page.</p>
<p>You also need to consider tightening up security on the form input, so validate what is coming in to ensure there is no SQL injections going on etc &#8211; I&#8217;ve really tried to just give you the basics here.</p>
<p><strong>The jQuery</strong></p>
<p>Finally, the jQuery. I am also using a snipsy bit of jQuery UI which you will need to include (but you can get all that from the download link at the end of this article).</p>
<pre class="brush: jscript;">$(document).ready(function() {

$(&quot;#searchbox&quot;).keyup(function(){

$.get(&quot;search.php&quot;,{query: $(&quot;#searchbox&quot;).val(), type: &quot;count&quot;}, function(data){

$(&quot;#buttontext&quot;).html(data + &quot; Results Available&quot;);

});
});

$(&quot;#searchbox&quot;).keyup(function(event){

if(event.keyCode == &quot;13&quot;)
{
getResults();
}

});

$(&quot;#submitbutton&quot;).click(function(){

getResults();

});

function getResults()
{

$.get(&quot;search.php&quot;,{query: $(&quot;#searchbox&quot;).val(), type: &quot;results&quot;}, function(data){

$(&quot;#resultsContainer&quot;).html(data);
$(&quot;#resultsContainer&quot;).show(&quot;blind&quot;);
});
}

});</pre>
<p>So on the keyup event on the search box, my live search count is being fired and returning this count number into my form button. Depending on the performance of your hardware this will be instant, or a bit laggy. Once you are satisfied with your search term and you know that there will be results, you can hit the &#8220;Enter&#8221; key or the button to display the results. At that point, the PHP script is called again and returns the HTML chunks as described before.</p>
<h3>Download</h3>
<div id="attachment_86" class="wp-caption alignleft" style="width: 70px"><a href="http://www.reynoldsftw.com/wp-content/uploads/2009/03/live-jquery-search.zip"><img class="size-full wp-image-86" title="Download Icon" src="http://www.reynoldsftw.com/wp-content/uploads/2009/01/drop-box-icon.png" alt="Download" width="60" height="60" /></a><p class="wp-caption-text">Download</p></div>
<p>As usual, click the box icon on the left to download the code in full including CSS and supporting image files. Hope you enjoy it, you&#8217;ll need to change the MySQL database connection variables, as well as the queries against the relevant tables etc&#8230;<img class="alignnone size-full wp-image-937" title="empty" src="http://www.reynoldsftw.com/wp-content/uploads/2009/03/empty.png" alt="empty" width="75" height="54" /></p>
<h3>Tools to help you learn&#8230;</h3>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<thead></thead>
<tbody>
<tr>
<td width="33%" align="center" valign="top">
<div id="attachment_613" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/1847196705?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1847196705"><img class="size-full wp-image-613" title="jquery13" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/jquery13.jpg" alt="Learning jQuery 1.3" width="101" height="132" /></a><p class="wp-caption-text">Learning jQuery 1.3</p></div>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=1847196705" border="0" alt="" width="1" height="1" /></td>
<td width="33%" align="center" valign="top">
<div id="attachment_966" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/0672329166?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0672329166"><img class="size-full wp-image-966" title="phpmysql" src="http://www.reynoldsftw.com/wp-content/uploads/2009/03/phpmysql.jpeg" alt="PHP MySQL Development" width="101" height="132" /></a><p class="wp-caption-text">PHP MySQL Development</p></div>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=0672329166" border="0" alt="" width="1" height="1" /></td>
<td width="33%" align="center" valign="top">
<div id="attachment_612" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/1847195121?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1847195121"><img class="size-full wp-image-612" title="jquery-ui" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/jquery-ui.jpg" alt="jQuery UI 1.6" width="101" height="132" /></a><p class="wp-caption-text">jQuery UI 1.6</p></div>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=1847195121" border="0" alt="" width="1" height="1" /></td>
</tr>
</tbody>
</table>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F03%2Flive-mysql-database-search-with-jquery%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F03%2Flive-mysql-database-search-with-jquery%2F&amp;source=SteveReynolds&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://www.reynoldsftw.com/2009/03/live-mysql-database-search-with-jquery/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Q&amp;A with jQuery UI Creator Paul Bakaus</title>
		<link>http://www.reynoldsftw.com/2009/03/questions-with-jquery-ui-creator-paul-bakaus/</link>
		<comments>http://www.reynoldsftw.com/2009/03/questions-with-jquery-ui-creator-paul-bakaus/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 15:00:10 +0000</pubDate>
		<dc:creator>Steve Reynolds</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Q&A]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Interview]]></category>
		<category><![CDATA[jQuery UI]]></category>

		<guid isPermaLink="false">http://www.reynoldsftw.com/?p=848</guid>
		<description><![CDATA[
			
				
			
		
With the release of jQuery UI 1.7 just out the door, Paul Bakaus &#8211; creator of jQuery UI has kindly agreed to answer some questions about that launch, his life as a programmer, his involvement with the jQuery UI project and the world as he knows it. Without further ado, let&#8217;s get on with the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F03%2Fquestions-with-jquery-ui-creator-paul-bakaus%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F03%2Fquestions-with-jquery-ui-creator-paul-bakaus%2F&amp;source=SteveReynolds&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p><img class="alignright size-full wp-image-900" title="portrait" src="http://www.reynoldsftw.com/wp-content/uploads/2009/03/portrait.png" alt="portrait" width="113" height="150" />With the release of jQuery UI 1.7 just <a href="http://blog.jqueryui.com/2009/03/jquery-ui-17/" target="_blank">out the door</a>, Paul Bakaus &#8211; creator of jQuery UI has kindly agreed to answer some questions about that launch, his life as a programmer, his involvement with the jQuery UI project and the world as he knows it. Without further ado, let&#8217;s get on with the session:</p>
<h3>Can you give me a brief history of your programming days? Where did it all start?</h3>
<p>Although it&#8217;s a bit embarrassing, my first programming experience was trying to build a customized and skinnable mediaplayer with Visual Basic 6. This probably was around 1999 or so, and although the media player was quite nice in terms of features, it had countless timers and totally killed every CPU by just playing a simple song.</p>
<p><span id="more-848"></span>After this experiment I soon realized that I wanted to do something with the internet. One of my hobbies was (and still is) japanese anime and manga, and there wasn&#8217;t really a great community around it in germany at that time, so I took the challenge and created a community called Anime-Domain as my first big web project. It was my little playground, and after 10 revisions and designs it grew so popular that it was featured in german print magazines and had some 10k unique visitors a day. This was the time where I knew that by doing web development, you could reach many people very quickly with what you do, so I decided to continue to go that route.</p>
<h3>How did you become the creator of jQuery UI? What&#8217;s the story behind that?</h3>
<p>I initially came to the jQuery project while searching for a good solution to power the web applications of a big german client. As I was specifically responsible for building out a lot of the frontend logic and interaction, I quickly found out about Interface, a collection of interface plugins developed by <strong>Stefan Petre</strong>. I soon realized there was a lot of work involved to make it stable for our environment, so I invested a lot of time into bugfixes and feature stabilization, and later even planned the next generation of Interface, Interface 2 with Stefan. However, it was then that Stefan moved on with founding his own business and ran out of time, so Interface was discontinued.</p>
<p>In May 2006, <strong>John Resig</strong> then asked me if I would build the first version of an official jQuery interface addition, since I already had quite some experience from working on Interface. He and the jQuery community wanted to have it done in three months for the Ajax Experience conference in Boston, which was nearly impossible after a quick analysis of my workload. I had a day job, and I estimated I would need to work on it 3-4 hours everyday. After some days of consideration, I finally said &#8216;yes&#8217;, and for a three month period woke up every day at 6am to work for 3 hours on jQuery UI and then go to my day job. Now I can say that it was worth it <img src='http://www.reynoldsftw.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>With jQuery UI 1.7 being released in the last few days, what do you see as the key parts of jQuery UI 1.7? What are you most proud of out of that release?</h3>
<p>The one thing I&#8217;m most proud of is that our framework has matured so much since 1.5. We have taken great care to unify our API, fix hundreds of compatibility and behaviour issues, and now we truly have a foundation to build upon without needing to rewrite the core functionality again and again. This will allow us to push our features in the next releases in literally no time.</p>
<h3>What were the biggest challenges of getting the 1.7 release out there?</h3>
<p>Our test coverage is still incomplete, and with every fixed bug, we introduced 2 others, which made the arrival at a stable level extremely difficult. Every week, there were some 50-100 bugs entered in the bugtracker, and there was literally no end. Luckily, we were able to triage the bugs to criticals and blockers and solve these in time for a release. You have to have a lot of guts to push out a release that&#8217;s still imperfect &#8211; but an imperfect release is better than one that gets delayed for months. You can always roll out 1.7.1.</p>
<h3>Jumping off of jQuery UI for a second, Do you &#8220;release early, release often&#8221; with all of your projects? What are your thoughts on that strategy?</h3>
<p>Speaking for myself, I often release too early. That has been a problem in the past, when we released versions as stable that weren&#8217;t, for instance. So it&#8217;s important to find a combination of both &#8211; a stable release must be stable, while development cannot be halted or blocked through stubborn processes. A labs section is great in that way &#8211; it allows developers to contribute freely and plan on an open canvas, with early preview releases, and the work can later be merged back.</p>
<p><center><script type="text/javascript"><!--
google_ad_client = "pub-6415056921376217";
google_ad_channel = "in-ad-unit-hor";
google_ui_features = "rc:0";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "0066CC";
google_color_text = "";
google_color_url = "0066CC";

//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</center></p>
<h3>Have any of your startup projects failed dismally &#8211; if so, why and how did you learn from them?</h3>
<p>A lot of my side projects failed, as a matter of fact, while others succeded. Usually, the reason why some project fails is not a technical one, but the fact that one didn&#8217;t build meta data around it. That means a dedicated site, documentation, instructions.</p>
<p>One of the examples is my recent Transformie plugin ( <a href="http://paulbakaus.com/2008/08/16/bringing-css-transform-to-internet-explorer/" target="_blank">http://paulbakaus.com/2008/08/16/bringing-css-transform-to-internet-explorer/</a> ). While I believe it gives you great technological advantage, meaning to be able to use CSS Transforms in Internet Explorer, Firefox 3.1 and Webkit/Safari, nobody adapted it yet. I believe the reason is that I simply forgot to also work on documentation and a dedicated site with a download, which could have helped a lot during the promotion.</p>
<h3>Mac, Windows or Linux? Why do you love this platform?</h3>
<p>I switched to Mac hardware around a year ago and I&#8217;m totally in love with it. All components work together nicely, and so far, I never had to return my Macbook Pro to the Apple Store because of an issue. However, I&#8217;m still using Windows through Parallels because OSX, while visually nice and stable, has fundamental usability flaws.</p>
<p>One of these flaws is the Finder. I recently worked on the jQuery UI Selectables in the labs version, and once again saw that the Finder had great flaws when it comes down to selection. For instance, if you select multiple items and click on one of them, the multiple selection isn&#8217;t cleared. Also, my tools that I love for windows simply don&#8217;t have an alternative yet (see below).</p>
<h3>What are your tools of choice to get the job done?</h3>
<p>For editing files, I love the <a href="http://www.e-texteditor.com/" target="_blank">e texteditor</a> (yep, the name is &#8220;e&#8221;). It basically started as a textmate clone for windows, but since then grew into something much greater. One of the features I can&#8217;t live without now is there great multiple selection support. Hold down CTRL, select a couple words through double clicking and then type over all of them. Is that cool or what? On a sidenote, on one of my talks in Japan the audience asked why I&#8217;m so insane to use a Textmate clone through an emulated Windows on OSX &#8211; I showed them this exact feature, and they were all amazed.</p>
<p>Other than that, I like <a href="http://tortoisesvn.tigris.org/" target="_blank">TortoiseSVN</a>, even if it slows down the Explorer, I love Photoshop, especially the new version with hardware acceleration, <a href="http://www.trillian.im/" target="_blank">Trillian Astra</a> for instant messaging, Gmail for email, <a href="http://www.mozilla-europe.org/en/firefox/" target="_blank">Firefox 3</a> for browsing, <a href="http://www.videolan.org/" target="_blank">VideoLAN</a> for playing video, <a href="http://www.apple.com/iwork/keynote/" target="_blank">Keynote</a> for preparing presentations, and WinSCP/Putty to do server administration. Phew, I guess that&#8217;s about it <img src='http://www.reynoldsftw.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<h3>Back onto jQuery UI&#8230; Can you see jQuery UI making more of an impression in the future, lead by the current successes of jQuery?</h3>
<p>This question is difficult to answer because jQuery, other than jQuery UI, can be useful almost everytime. jQuery UI gives you a specific set of user interface widgets and behaviours, and many people think of it as loosing a kind of freedom. On the other hand, there&#8217;s definitely some connection &#8211; if you&#8217;re using Prototype already, and you&#8217;re looking for an UI framework, your choice is most often <a href="http://script.aculo.us/" target="_blank">script.aculo.us</a>. If you&#8217;re using jQuery, why not use the official side project?</p>
<h3>What&#8217;s next on the hitlist with jQuery UI?</h3>
<p>There&#8217;s a lot of movement right now. We finally pushed out 1.7 3 days ago, which we believe is a solid foundation for everything that&#8217;s coming in in the next couple of months. While 1.7 was a stability and foundation release, the next releases will concentrate around features, so expect to see many more components soon. Some examples are the colorpicker, menu, grid, tooltip and tree widgets.</p>
<p>Additionally, my personal goal is to target more platforms, for example the iPhone. Early test implementations I did show that it&#8217;s fairly doable to support the touch events, and therefore make all jQuery UI interaction compatible with mobile devices.</p>
<p>Additionally, I&#8217;m working on a brand new lab section to be able to push feature development without any restrictions. This allows us to work on anything we find is cool, but maybe not on the roadmap. Expect to see a lot soon in the <a href="http://blog.jqueryui.com/" target="_blank">jQuery UI Blog</a>.</p>
<h3>Is it too early to discuss jQuery UI 1.8?</h3>
<p>There&#8217;s a lot on our list for the year. Filament Group did a great job to start a list of all widgets they could imagine being part of jQuery UI, which can be found and discussed in the jQuery UI planning wiki at <a href="http://wiki.jqueryui.com" target="_blank">http://wiki.jqueryui.com</a>. There&#8217;s no definite roadmap for 1.8 yet, but some components are likely to make it into the next release. For instance, widgets that are already being worked on (grid, menu), as well as widgets that we had to kick out of 1.6/1.7 because they weren&#8217;t stable enough (spinner, colorpicker, autocomplete). It will be a huge feature release!</p>
<h3>And finally, If you could give one tip to any new budding jQuery UI developers, what would it be?</h3>
<p>Think different. No, seriously. For jQuery UI, we&#8217;re trying to take the same path than jQuery, and people that are restricted to thinking in classical OOP patterns will have a problem. If you think about it freely and give the functional, event-driven and progressive approach a try, you&#8217;ll find yourself getting the work done with jQuery UI in a fraction of the time needed than with other frameworks.</p>
<p><strong>Paul can be found on Twitter as <a href="http://twitter.com/pbakaus" target="_blank">@pbakaus</a>, or via his blog at <a href="http://paulbakaus.com/" target="_blank">http://paulbakaus.com/</a></strong></p>
<h3>Tools to help you learn&#8230;</h3>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<thead></thead>
<tbody>
<tr>
<td width="33%" align="center" valign="top">
<div id="attachment_613" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/1847196705?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1847196705"><img class="size-full wp-image-613" title="jquery13" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/jquery13.jpg" alt="Learning jQuery 1.3" width="101" height="132" /></a><p class="wp-caption-text">Learning jQuery 1.3</p></div>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=1847196705" border="0" alt="" width="1" height="1" /></td>
<td width="33%" align="center" valign="top">
<div id="attachment_770" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/B00154JDAI?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B00154JDAI"><img class="size-full wp-image-770" title="kindle" src="http://www.reynoldsftw.com/wp-content/uploads/2009/03/kindle.jpg" alt="Amazon Kindle 2" width="101" height="132" /></a><p class="wp-caption-text">Amazon Kindle 2</p></div>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=B00154JDAI" border="0" alt="" width="1" height="1" /></td>
<td width="33%" align="center" valign="top">
<div id="attachment_612" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/1847195121?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1847195121"><img class="size-full wp-image-612" title="jquery-ui" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/jquery-ui.jpg" alt="jQuery UI 1.6" width="101" height="132" /></a><p class="wp-caption-text">jQuery UI 1.6</p></div>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=1847195121" border="0" alt="" width="1" height="1" /></td>
</tr>
</tbody>
</table>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F03%2Fquestions-with-jquery-ui-creator-paul-bakaus%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F03%2Fquestions-with-jquery-ui-creator-paul-bakaus%2F&amp;source=SteveReynolds&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://www.reynoldsftw.com/2009/03/questions-with-jquery-ui-creator-paul-bakaus/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>An Introduction to jQuery UI &#8211; Part 2</title>
		<link>http://www.reynoldsftw.com/2009/02/an-introduction-to-jquery-ui-part-2/</link>
		<comments>http://www.reynoldsftw.com/2009/02/an-introduction-to-jquery-ui-part-2/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 13:08:29 +0000</pubDate>
		<dc:creator>Steve Reynolds</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Introduction]]></category>
		<category><![CDATA[jQuery UI]]></category>

		<guid isPermaLink="false">http://www.reynoldsftw.com/?p=650</guid>
		<description><![CDATA[
			
				
			
		
In my first jQuery UI article, we discussed the Interaction element of the functionality, drag and drops, resizing and sorting. In part 2 I will discuss the Widget elements that can be used with jQuery UI, these can be seen as custom controls to all you .net people out there. I&#8217;ve tried to go a [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F02%2Fan-introduction-to-jquery-ui-part-2%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F02%2Fan-introduction-to-jquery-ui-part-2%2F&amp;source=SteveReynolds&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>In my <a href="http://www.reynoldsftw.com/2009/02/an-in-depth-look-at-jquery-ui-part-1/">first jQuery UI article</a>, we discussed the Interaction element of the functionality, drag and drops, resizing and sorting. In part 2 I will discuss the Widget elements that can be used with jQuery UI, these can be seen as custom controls to all you .net people out there. I&#8217;ve tried to go a bit deeper this time round, giving you home grown examples of usage in addition to the jQuery examples, as well as giving you jQuery-only alternatives. Let&#8217;s take a look&#8230;</p>
<h3>Accordion</h3>
<p><center><object width="437" height="241" data="http://vimeo.com/moogaloop.swf?clip_id=3363934&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash"  style="border: 1px solid #316590;"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=3363934&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" /></object></center></p>
<p>I love this widget. It&#8217;s a great tool to show and hide chunks of data within a page, with the added awesomeness of animations. As long as you mark up your HTML correctly, implementation is really simple. The example above uses:</p>
<pre class="brush: jscript;">$(&quot;#accordion&quot;).accordion({
header: &quot;h3&quot;
});</pre>
<p>Beyond this, you are able to assign events to this, for example when an element is opened or closed using <em>change:</em>.</p>
<p><a href="http://jquery.bassistance.de/accordion/demo/" target="_blank"><img class="aligncenter size-full wp-image-651" title="accordion-alt" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/accordion-alt.png" alt="accordion-alt" width="266" height="131" /></a></p>
<p><strong>Alternatives:</strong> There is also a jQuery plugin, again called <a href="http://jquery.bassistance.de/accordion/demo/" target="_blank">Accordion</a> created by Jörn Zaefferer. It&#8217;s arguably easier to implement, does exactly the same, and you can customize as much as you want. Implementation can be as easy as:</p>
<pre class="brush: jscript;">jQuery('#list1a').accordion();</pre>
<p><span id="more-650"></span></p>
<h3>DatePicker</h3>
<p><a href="http://jqueryui.com/demos/datepicker/"><img class="aligncenter size-full wp-image-576" title="datepicker" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/datepicker.png" alt="datepicker" width="262" height="159" /></a><br />
I discussed using DatePicker in my quick win blog post last week. There really is no better alternative to showing a great inline calendar widget for your forms quickly.</p>
<p><strong>Alternatives:</strong> There are jQuery alternatives to this UI widget. Again this one is called <a href="http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/index.html" target="_blank">&#8220;DatePicker&#8221;</a> from Kelvin Luck. He&#8217;s built in allot of flexibility with this plugin, including something I always need which is from and to dates. I&#8217;ve used it a couple of times on projects and found it very <a href="http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/index.html" target="_blank">well documented</a> and easy to use. He&#8217;s got dozens of demos with source code which is really great.</p>
<p>If you need a simple quick win, go with the UI widget, but for ultimate flexibility and jQuery only, Kelvin&#8217;s plugin is the way to go.</p>
<h3>Dialog</h3>
<p><a href="http://jqueryui.com/demos/dialog/#modal-message" target="_blank"><img class="aligncenter size-full wp-image-652" title="dialog" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/dialog.png" alt="dialog" width="396" height="98" /></a></p>
<p><a href="http://jqueryui.com/demos/dialog/#modal-message" target="_blank">Dialog</a> is very simple, it shows snazzy dialog windows on the desktop &#8211; and I love the background effect. However as nice as they are, there are better looking alternatives. If you want to sit pure with jQuery UI, Dialog will do what you need it to do, but plugins like <a href="http://jquery.com/demo/thickbox/" target="_blank">&#8220;Thickbox&#8221;</a> I&#8217;ve found are much smoother and nicer to implement.</p>
<p><center><script type="text/javascript"><!--
google_ad_client = "pub-6415056921376217";
google_ad_channel = "in-ad-unit-sq";
google_ui_features = "rc:0";
google_ad_width = 336;
google_ad_height = 280;
google_ad_format = "336x280_as";
google_ad_type = "text_image";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "0066CC";
google_color_text = "";
google_color_url = "0066CC";

//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</center></p>
<h3>Progress Bar</h3>
<p><a href="http://jqueryui.com/demos/progressbar/" target="_blank"><img class="aligncenter size-full wp-image-659" title="progress" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/progress.png" alt="progress" width="268" height="33" /></a><a href="http://jqueryui.com/demos/progressbar/" target="_blank">Progress bar</a> is an interesting alternative to the other generic javascript feedback loading techniques out there. Based on where you are in your loading timeline, you can specify a % value against your progress bar element, and it will update. Obviously, if you only update the element 3 times, the animation between states will be pretty jerky, so try to update the progress % of the bar as often as possible. For example, this code would increase a progress bar by 1% every second:</p>
<pre class="brush: jscript;">var count = 0;
startProgress();

function startProgress()
{
$(&quot;#progressbar&quot;).progressbar({
value: count
});
if(count &lt; 100)
{
count = count+1;
setTimeout(&quot;startProgress&quot;, 1000);
}
}</pre>
<p><a href="http://t.wits.sg/jquery-progress-bar/" target="_blank"><img class="aligncenter size-full wp-image-660" title="progress-alt" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/progress-alt.png" alt="progress-alt" width="296" height="55" /></a></p>
<p><strong>Alternatives:</strong> For you jQuery purists out there there is also a pretty good plugin called <a href="http://t.wits.sg/jquery-progress-bar/" target="_blank">&#8220;jQuery Progress Bar&#8221;</a>. Very similar, however does include some nice animations between progress points which is a great addition.</p>
<h3>Slider</h3>
<p><a href="http://jqueryui.com/demos/slider/" target="_blank"><img class="aligncenter size-full wp-image-661" title="slider" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/slider.png" alt="slider" width="281" height="82" /></a></p>
<p>For me, <a href="http://jqueryui.com/demos/slider/" target="_blank">Slider</a> is really where jQuery UI comes into it&#8217;s own&#8230; I love the simplicity of the implementation of Slider, and the flexible options around horizontal, vertical and range is great. The way I have used it in the past is to call certain functionality upon the &#8220;change&#8221; event &#8211; for example &#8211; to alter the css opacity of an element in your GUI.</p>
<pre class="brush: jscript;">function refreshCSS()
{
var newVal = $(&quot;#slider&quot;).slider(&quot;value&quot;);
$(&quot;#myElement&quot;).css(&quot;opacity&quot;: newVal);
}

$(function() {
$(&quot;#slider&quot;).slider({
range: &quot;min&quot;,
max: 100,
value: 50,
slide: refreshCSS,
change: refreshCSS
});
});</pre>
<p>Alternatives: There aren&#8217;t many jQuery plugin options out there unfortunately that meet the greatness of the Slider widget in jQuery UI. One possible option is <a href="http://interface.eyecon.ro/docs/slider" target="_blank">this slider plugin</a>, however &#8211; I&#8217;m not convinced by it, and found it sometimes works, sometimes not&#8230;</p>
<h3>Tabs</h3>
<p><a href="http://jqueryui.com/demos/tabs" target="_blank"><img class="aligncenter size-full wp-image-662" title="tabs" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/tabs.png" alt="tabs" width="509" height="38" /></a></p>
<p>The final widget in today&#8217;s article is <a href="http://jqueryui.com/demos/tabs" target="_blank">Tabs</a>. Very simple, it&#8217;ll take content from pre-defined DIV elements and create a tabbed interface for it. Tabs can be sortable, as well as having events assigned to them on click, like show/hide, loading in content via Ajax, or any other functionality you can think of.</p>
<p><strong>Alternatives:</strong> There aren&#8217;t many out there to be honest, but this <a href="http://apricotstudios.wordpress.com/2008/08/29/jquery-tabs-tutorial/" target="_blank">excellent tutorial</a> by Apricot Studios describes how best to achieve tabs with pure jQuery.</p>
<h3>Conclusion</h3>
<p>I hope you found this article useful as an introduction to the capabilities of jQuery UI, the alternatives out there, as well as some ideas on how you can implement from my home grown examples above. In Part 3 I&#8217;ll describe the Effects that you can achieve with jQuery UI.</p>
<h3>Tools to help you learn&#8230;</h3>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<thead></thead>
<tbody>
<tr>
<td width="33%" align="center" valign="top">
<div id="attachment_612" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/1847195121?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1847195121"><img class="size-full wp-image-612" title="jquery-ui" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/jquery-ui.jpg" alt="jQuery UI 1.6" width="101" height="132" /></a><p class="wp-caption-text">jQuery UI 1.6</p></div>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=1847195121" border="0" alt="" width="1" height="1" /></td>
<td width="33%" align="center" valign="top">
<div id="attachment_770" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/B00154JDAI?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B00154JDAI"><img class="size-full wp-image-770" title="kindle" src="http://www.reynoldsftw.com/wp-content/uploads/2009/03/kindle.jpg" alt="Amazon Kindle 2" width="101" height="132" /></a><p class="wp-caption-text">Amazon Kindle 2</p></div>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=B00154JDAI" border="0" alt="" width="1" height="1" /></td>
<td width="33%" align="center" valign="top">
<div id="attachment_613" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/1847196705?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1847196705"><img class="size-full wp-image-613" title="jquery13" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/jquery13.jpg" alt="Learning jQuery 1.3" width="101" height="132" /></a><p class="wp-caption-text">Learning jQuery 1.3</p></div>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=1847196705" border="0" alt="" width="1" height="1" /></td>
</tr>
</tbody>
</table>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F02%2Fan-introduction-to-jquery-ui-part-2%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F02%2Fan-introduction-to-jquery-ui-part-2%2F&amp;source=SteveReynolds&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://www.reynoldsftw.com/2009/02/an-introduction-to-jquery-ui-part-2/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>I Failed&#8230;</title>
		<link>http://www.reynoldsftw.com/2009/02/i-failed/</link>
		<comments>http://www.reynoldsftw.com/2009/02/i-failed/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 08:46:50 +0000</pubDate>
		<dc:creator>Steve Reynolds</dc:creator>
				<category><![CDATA[Social-Web]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[jQuery UI]]></category>

		<guid isPermaLink="false">http://www.reynoldsftw.com/?p=635</guid>
		<description><![CDATA[
			
				
			
		
Yes friends I, Stephen Reynolds from a small town in Sussex England, have failed my readers.
With the fog of success surrounding me, and the urgency to follow up with a decent post, I have fumbled my way  into writing an article that was lacking in original content from me. Whilst I put a lot [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F02%2Fi-failed%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F02%2Fi-failed%2F&amp;source=SteveReynolds&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>Yes friends I, <em>Stephen Reynolds</em> from a small town in <em>Sussex England</em>, have failed my readers.</p>
<p>With the fog of success surrounding me, and the urgency to follow up with a decent post, I have fumbled my way  into writing <a href="http://www.reynoldsftw.com/2009/02/an-in-depth-look-at-jquery-ui-part-1/">an article</a> that was lacking in original content from me. Whilst I put a lot of effort in, describing how jQuery UI elements can be used and running video demos of their functionality, this wasn&#8217;t enough and I apologize.</p>
<p>It&#8217;s a good early lesson for me and any other bloggers out there, you&#8217;ve got to add your own spin on the content you&#8217;re delivering to your users. Give some value add. Title your articles appropriately, and don&#8217;t sell it to the wrong demographic. I&#8217;ll digress&#8230;</p>
<p><strong>Learning 1: Give greater value add, more original content.</strong></p>
<p>With my blog, I have always strived to focus on the common man. I&#8217;m not an über nerd. I&#8217;m a generalist. I know enough about many things to succeed in my goals. If you&#8217;re looking for me to drill down into the very depths of jQuery sourcecode, you&#8217;ve come to the wrong place, sorry.</p>
<p><strong>Learning 2: I need to make sure that I don&#8217;t suggest to new potential readers that I&#8217;m about to do be super nerdy. Set accurate expectations.</strong></p>
<p>Whilst stats-wise the article in question was a resounding success, there was some backlash which ultimately has stopped the article in it&#8217;s stride. I titled it completely wrong, it&#8217;s not in depth, which misled my <strong>HN</strong> readership. By setting their expectations to a high bar, my article never eclipsed that imaginary target, and people got pissed. I value the HN readership feedback, they expected more and so, I will give as best I can next time over.</p>
<p><strong>Learning 3: Title your content appropriately, don&#8217;t mis-sell it.</strong></p>
<p>I&#8217;ve reached a turning point which most bloggers don&#8217;t get to, or don&#8217;t even realize. The early success on my blog has been nice, and the pressure is always there to follow up with bigger and better content&#8230; just dont lose sight of what you are trying to achieve. If you&#8217;re a potential blogger, learn from my mistake, take your time and let your content explode.
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F02%2Fi-failed%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F02%2Fi-failed%2F&amp;source=SteveReynolds&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://www.reynoldsftw.com/2009/02/i-failed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Introduction to jQuery UI &#8211; Part 1</title>
		<link>http://www.reynoldsftw.com/2009/02/an-in-depth-look-at-jquery-ui-part-1/</link>
		<comments>http://www.reynoldsftw.com/2009/02/an-in-depth-look-at-jquery-ui-part-1/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 14:00:33 +0000</pubDate>
		<dc:creator>Steve Reynolds</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Introduction]]></category>
		<category><![CDATA[jQuery UI]]></category>

		<guid isPermaLink="false">http://www.reynoldsftw.com/?p=600</guid>
		<description><![CDATA[
			
				
			
		
jQuery UI is a fantastic library that sits neatly on top of jQuery enabling you to animate various elements for amazing front-end interactions. In the first of 3 articles, I will discuss the Interaction functionality, followed by Widgets, then Effects in part 3.
Drag &#38; Drop

Drag and Drop is becoming more and more popular nowdays, especially [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F02%2Fan-in-depth-look-at-jquery-ui-part-1%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F02%2Fan-in-depth-look-at-jquery-ui-part-1%2F&amp;source=SteveReynolds&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
<p>jQuery UI is a fantastic library that sits neatly on top of jQuery enabling you to animate various elements for amazing front-end interactions. In the first of 3 articles, I will discuss the <strong>Interaction</strong> functionality, followed by <strong><a href="http://www.reynoldsftw.com/2009/02/an-introduction-to-jquery-ui-part-2/">Widgets</a></strong>, then <strong>Effects </strong>in part 3.</p>
<h3>Drag &amp; Drop</h3>
<p><center><object width="437" height="265" data="http://vimeo.com/moogaloop.swf?clip_id=3306602&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" style="border: 1px solid #316590;"><param name="align" value="center" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=3306602&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" /></object></center></p>
<p><a href="http://jqueryui.com/demos/draggable/" target="_blank">Drag and Drop</a> is becoming more and more popular nowdays, especially in customizable user interfaces for complex applications. jQuery UI takes simple drag and drop functionality a step further, by not only making it easy to enable drag and drop on an element, but also to define certain criteria around that, like only drag vertically, or only allow dragging within a parent element. You can also set &#8220;handles&#8221; which are discrete elements where the drag and drop functionality is actioned, meaning a zone within another zone , so that for example only a title bar enables the drag and drop functions for a particular element.</p>
<div id="attachment_603" class="wp-caption aligncenter" style="width: 410px"><img class="size-full wp-image-603" title="mobile-me-drag" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/mobile-me-drag.jpg" alt="Apple's MobileMe Drag and Drop" width="400" height="83" /><p class="wp-caption-text">Apple&#39;s MobileMe Drag and Drop</p></div>
<p>As I said, enabling the functionality is very simple for basic drag and drop</p>
<pre class="brush: jscript;">$(&quot;#element&quot;).draggable();</pre>
<p><a href="http://jqueryui.com/demos/droppable" target="_blank"><img class="aligncenter size-full wp-image-611" title="dropable" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/dropable.png" alt="dropable" width="436" height="123" /></a></p>
<p>There is also a <a href="http://jqueryui.com/demos/droppable" target="_blank">Droppable</a> element to this too which allows you to target drop zones effectively.</p>
<h3>Resizable</h3>
<p><a href="http://jqueryui.com/demos/resizable/" target="_blank"><img class="aligncenter size-full wp-image-609" title="resizable2" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/resizable2.png" alt="resizable2" width="324" height="111" /></a>I ran through <a href="http://jqueryui.com/demos/resizable/" target="_blank">resizable</a> previously in my <a href="http://www.reynoldsftw.com/2009/02/case-study-how-wordpress-uses-jquery/" target="_self">WordPress Admin jQuery case study</a>. It&#8217;s an easy to implement plugin to enable dynamic resizing of elements. You can choose to constrain to particular sizes, or only grow horizontally for example. You can also animate your resizing with a great grow/shrink effect.</p>
<pre class="brush: jscript;">$(&quot;#element&quot;).resizable();</pre>
<p><center><script type="text/javascript"><!--
google_ad_client = "pub-6415056921376217";
google_ad_channel = "in-ad-unit-sq";
google_ui_features = "rc:0";
google_ad_width = 336;
google_ad_height = 280;
google_ad_format = "336x280_as";
google_ad_type = "text_image";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "0066CC";
google_color_text = "";
google_color_url = "0066CC";

//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</center></p>
<h3>Selectable</h3>
<p><center><object width="437" height="265" data="http://vimeo.com/moogaloop.swf?clip_id=3307114&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" style="border: 1px solid #316590;"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=3307114&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" /></object></center></p>
<p><a href="http://jqueryui.com/demos/selectable/" target="_blank">Selectable</a> allows you to select multiple elements, either by clicking on them to choose them, or by dragging to multi select them. Can think of some great implementations within forms, or even a file managing interface&#8230; However, as you can see above &#8211; I experienced some odd behavior in Safari, so seems to suggest there may be some work to do on this part of jQuery UI.</p>
<p>Default functionality again is very simple to implement with jQuery:</p>
<pre class="brush: jscript;">$(&quot;#element&quot;).selectable();</pre>
<h3>Sortable</h3>
<p><center><object width="437" height="265" data="http://vimeo.com/moogaloop.swf?clip_id=3307161&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" style="border: 1px solid #316590;"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=3307161&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" /></object></center></p>
<p>The final plugin in the Interaction section is <a href="http://jqueryui.com/demos/sortable" target="_blank">Sortable</a>. With Sortable you give yourself the ability to re-use some of the drag and drop functionality to allow you to sort your elements. A simple example is for organising page widgets like in Sharepoint, or the <a href="http://www.bbc.co.uk" target="_blank">BBC homepage</a>. WordPress have used it in various places within their new Administration section, allowing the users to be extremely flexible and create very personal experiences.</p>
<p>There&#8217;s a theme here with the code implementation, as you can tell &#8211; very easy stuff for basic functionality:</p>
<pre class="brush: jscript;">$(&quot;#element&quot;).sortable();</pre>
<h3>Conclusion</h3>
<p>For me, the <strong>Interactive</strong> functionalities are the most powerful of all the tools that come with jQuery UI &#8211; Developers can really build some great intuitive, <em>interactive</em> applications with minimal effort, and that&#8217;s what jQuery is all about! In <strong><a href="http://www.reynoldsftw.com/2009/02/an-introduction-to-jquery-ui-part-2/">Part 2</a></strong> I will discuss some Widgets that are available with jQuery UI to bring some more <strong><em>bling</em></strong> to your web applications.</p>
<h3>Tools to help you learn&#8230;</h3>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<thead></thead>
<tbody>
<tr>
<td width="33%" align="center" valign="top">
<div id="attachment_612" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/1847195121?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1847195121"><img class="size-full wp-image-612" title="jquery-ui" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/jquery-ui.jpg" alt="jQuery UI 1.6" width="101" height="132" /></a><p class="wp-caption-text">jQuery UI 1.6</p></div>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=1847195121" border="0" alt="" width="1" height="1" /></td>
<td width="33%" align="center" valign="top">
<div id="attachment_770" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/B00154JDAI?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=B00154JDAI"><img class="size-full wp-image-770" title="kindle" src="http://www.reynoldsftw.com/wp-content/uploads/2009/03/kindle.jpg" alt="Amazon Kindle 2" width="101" height="132" /></a><p class="wp-caption-text">Amazon Kindle 2</p></div>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=B00154JDAI" border="0" alt="" width="1" height="1" /></td>
<td width="33%" align="center" valign="top">
<div id="attachment_613" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/1847196705?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1847196705"><img class="size-full wp-image-613" title="jquery13" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/jquery13.jpg" alt="Learning jQuery 1.3" width="101" height="132" /></a><p class="wp-caption-text">Learning jQuery 1.3</p></div>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=1847196705" border="0" alt="" width="1" height="1" /></td>
</tr>
</tbody>
</table>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F02%2Fan-in-depth-look-at-jquery-ui-part-1%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F02%2Fan-in-depth-look-at-jquery-ui-part-1%2F&amp;source=SteveReynolds&amp;style=normal&amp;service=bit.ly" height="61" width="50" /><br />
			</a>
		</div>
]]></content:encoded>
			<wfw:commentRss>http://www.reynoldsftw.com/2009/02/an-in-depth-look-at-jquery-ui-part-1/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
	</channel>
</rss>

