SlideShare uma empresa Scribd logo
1 de 94
Baixar para ler offline
jQuery UI and Plugins
            by Marc Grabanski
What do you think of when
you hear, “jQuery UI”?
Widgets?
Yeah, it’s got widgets.
But, what else should
you think of?
One of the most under-
hyped piece of software
on the web
jQuery UI CSS framework
jQuery UI Classes
jQuery UI Classes
.ui-state-active
jQuery UI Classes
.ui-state-active
            .ui-state-default
jQuery UI Classes
.ui-state-active
            .ui-state-default
                                .ui-widget-header
jQuery UI Classes
.ui-state-active
            .ui-state-default
                                .ui-widget-header


                                   .ui-widget-content
UI Icons

  .ui-icon




CSS Sprite
Add rounded corners to anything
Add rounded corners to anything
        .ui-corner-all
UI Class Quick Tip


Add hover by grabing buttons with
.ui-state-default and attach hover class.
         .ui-state-default
UI Class Quick Tip


Add hover by grabing buttons with
.ui-state-default and attach hover class.
         .ui-state-hover
UI Class Quick Tip


Add hover by grabing buttons with
.ui-state-default and attach hover class.
.ui-state-default    .ui-state-hover
UI Class Quick Tip


Add hover by grabing buttons with
.ui-state-default and attach hover class.
.ui-state-default           .ui-state-hover

 $(“.ui-state-default”).hover(
    function(){ $(this).addClass(“ui-state-hover”); }),
    function(){ $(this).removeClass(“ui-state-hover”); })
 );
UI Class Quick Tip


Add hover by grabing buttons with
.ui-state-default and attach hover class.
.ui-state-default                               .ui-state-hover

 $(“.ui-state-default”).hover(
    function(){ $(this).addClass(“ui-state-hover”); }),
    function(){ $(this).removeClass(“ui-state-hover”); })
 );
    More info:
    http://www.filamentgroup.com/lab/styling_buttons_and_toolbars_with_the_jquery_ui_css_framework/
Customize your CSS
 with ThemeRoller
Bring ThemeRoller right into
         your page
Design your own theme




    jQuery UI Aristo Theme
http://taitems.tumblr.com/post/482577430/introducing-aristo-a-jquery-ui-theme
jQuery UI Widgets
UI Button
<button>A button element</button>
$(“button”).button();
UI Button
<button>A button element</button>
$(“button”).button();

Radio Group
<div id="radio1">
     <input type="radio" id="radio1" name="radio" />
      <label for="radio1">Choice 1</label>
     <input type="radio" id="radio2" name="radio" checked="checked" />
      <label for="radio2">Choice 2</label>
     <input type="radio" id="radio3" name="radio" />
      <label for="radio3">Choice 3</label>
</div>

$(“#radio1”).buttonset();
UI Accordion
<div id="accordion">
    <h3><a href="#">Section 1</a></h3>
    <div>…content…</div>
    <h3><a href="#">Section 2</a></h3>
    <div>…content…</div>
    <h3><a href="#">Section 3</a></h3>
    <div>…content…</div>
</div>
UI Accordion
<div id="accordion">
    <h3><a href="#">Section 1</a></h3>
    <div>…content…</div>
    <h3><a href="#">Section 2</a></h3>
    <div>…content…</div>
    <h3><a href="#">Section 3</a></h3>
    <div>…content…</div>
</div>



         $(“#accordion”).accordion();
UI Dialog

<div id="dialog" title="Dialog Title">I'm in a dialog</div>
UI Dialog

<div id="dialog" title="Dialog Title">I'm in a dialog</div>

               $("#dialog").dialog();
UI Dialog

<div id="dialog" title="Dialog Title">I'm in a dialog</div>

               $("#dialog").dialog();
UI Datepicker

$("#datepicker").datepicker();
UI Datepicker

$("#datepicker").datepicker();
UI Progressbar


$("#progressbar").progressbar({ value: 37 });
UI Progressbar


$("#progressbar").progressbar({ value: 37 });
UI Autocomplete




$("input#autocomplete").autocomplete({
  source: ["c++", "java", "php",
"coldfusion", "javascript", "asp", "ruby"]
});
UI Autocomplete




$("input#autocomplete").autocomplete({
  source: ["c++", "java", "php",
"coldfusion", "javascript", "asp", "ruby"]
});
UI Tabs
<div id="tabs">
    <ul>
        <li><a href="#tabs-1">First</a></li>
        <li><a href="#tabs-2">Second</a></li>
        <li><a href="#tabs-3">Third</a></li>
    </ul>
    <div id="tabs-1">...</div>
    <div id="tabs-2">...</div>
    <div id="tabs-3">...</div>
</div>
UI Tabs
<div id="tabs">
    <ul>
        <li><a href="#tabs-1">First</a></li>
        <li><a href="#tabs-2">Second</a></li>
        <li><a href="#tabs-3">Third</a></li>
    </ul>
    <div id="tabs-1">...</div>
    <div id="tabs-2">...</div>
    <div id="tabs-3">...</div>
</div>
            $("#tabs").tabs();
UI Tabs
<div id="tabs">
    <ul>
        <li><a href="#tabs-1">First</a></li>
        <li><a href="#tabs-2">Second</a></li>
        <li><a href="#tabs-3">Third</a></li>
    </ul>
    <div id="tabs-1">...</div>
    <div id="tabs-2">...</div>
    <div id="tabs-3">...</div>
</div>
            $("#tabs").tabs();
User Interaction
User Interaction

• Draggable
User Interaction

• Draggable
• Droppable
User Interaction

• Draggable
• Droppable
• Sortable
User Interaction

• Draggable
• Droppable
• Sortable
• Resizable
User Interaction

• Draggable
• Droppable
• Sortable
• Resizable
• Selectable
User Interaction

$("#draggable").draggable();
User Interaction

$("#draggable").draggable();

Add droppable that accepts draggable
$("#droppable").droppable({
   accept: '#draggable',
   drop: function(event, ui) {
     // do something
   }
});
UI Effects
UI Effects

• Color animations
UI Effects

• Color animations
• Animated add/remove class
UI Effects

• Color animations
• Animated add/remove class
• Effects like shake and drop
UI Effects

• Color animations
• Animated add/remove class
• Effects like shake and drop
• Easing
UI Effects
Animate background color in .5 seconds
$(...).animate({
  backgroundColor: "#68BFEF"
}, 500);
UI Effects
Animate background color in .5 seconds
$(...).animate({
  backgroundColor: "#68BFEF"
}, 500);
Animate to newClass in .5 seconds
$(...).switchClass(
 'currentClass','newClass', 500);
UI Effects
Animate background color in .5 seconds
$(...).animate({
  backgroundColor: "#68BFEF"
}, 500);
Animate to newClass in .5 seconds
$(...).switchClass(
 'currentClass','newClass', 500);
Hide elements with drop animation
$(...).hide("drop",
 { direction: "down" }, 500);
My Fun Little Tutorial
Building a Ninja Turtles Game with jQuery




    http://marcgrabanski.com/article/building-a-tmnt-game-with-jquery
jQuery UI Widget Factory
Writing Plugins
$.widget("ui.mywidget", {
  // default options
  options: {
    option1: "defaultValue",
    hidden: true
  },
  _create: function() {
    // creation code for mywidget
    // can use this.options
    if (this.options.hidden) {
       // and this.element
      this.element.hide();
    }
 }
});
         http://jqueryui.com/docs/Developer_Guide
Example UI Widget

jQuery UI Growl Notification




http://www.erichynds.com/jquery/a-jquery-ui-growl-ubuntu-
                   notification-widget/
jQuery UI in Practice
Video Example




http://mjgin.com/img/portfolio/videos/subarucms.swf
UI Datepicker
UI Datepicker



                UI Sortable
UI Datepicker



                  UI Sortable

        UI Tabs
UI Datepicker



                     UI Sortable

        UI Tabs

         UI Dialog
What about Plugins?
JS Tree
http://www.jstree.com/
JS Tree
http://www.jstree.com/




 WYM Editor
 http://www.wymeditor.org/
Good Plugin Checklist
Good Plugin Checklist


•API is like jQuery core
Good Plugin Checklist


•API is like jQuery core
•Buzz / mentions in blogs
Good Plugin Checklist


•API is like jQuery core
•Buzz / mentions in blogs
•Documentation
Good Plugin Checklist


•API is like jQuery core
•Buzz / mentions in blogs
•Documentation
•CSS makes sense to you
Good Plugin Checklist


•API is like jQuery core
•Buzz / mentions in blogs
•Documentation
•CSS makes sense to you
•Author is committed to support
Good Plugin Checklist


•API is like jQuery core
•Buzz / mentions in blogs
•Documentation
•CSS makes sense to you
•Author is committed to support
•or.. Jörn made it http://bassistance.de/
Identify Good Plugin API
Identify Good Plugin API


Properties (options)
 $(...).plugin({ option1: value, option2: value });
Identify Good Plugin API


Properties (options)
 $(...).plugin({ option1: value, option2: value });

Callbacks (events)
 $(...).plugin({
   onSomeAction: function(){
     // callback action
   })
 });
Identify Good Plugin API


Properties (options)
 $(...).plugin({ option1: value, option2: value });

Callbacks (events)
 $(...).plugin({
   onSomeAction: function(){
     // callback action
   })
 });
Methods
 $(...).plugin(“destroy”);
Good Plugin Support
Good Plugin Support



•Google Groups, mailing lists
Good Plugin Support



•Google Groups, mailing lists
•Comments are ok when plugin is new
Good Plugin Support



•Google Groups, mailing lists
•Comments are ok when plugin is new
•Does author modify plugin based on feedback?
Good Plugin Support



•Google Groups, mailing lists
•Comments are ok when plugin is new
•Does author modify plugin based on feedback?
•Code repository, when was last commit?
Good Plugin Community
Good Plugin Community



•Buzz - Plugin Lists, Ajaxian, etc
Good Plugin Community



•Buzz - Plugin Lists, Ajaxian, etc
•Does the author make update announcements?
Good Plugin Community



•Buzz - Plugin Lists, Ajaxian, etc
•Does the author make update announcements?
•Depreciated features well-documented.
Good Plugin Community



•Buzz - Plugin Lists, Ajaxian, etc
•Does the author make update announcements?
•Depreciated features well-documented.

 Identify that the author is communicating.
My “Plugins Toolbox”




http://marcgrabanski.com/article/jquery-plugins-toolbox
Thank you!
Marc Grabanski:
http://marcgrabanski.com

Twitter: @1Marc

Mais conteúdo relacionado

Mais procurados

High Performance Ajax Applications
High Performance Ajax ApplicationsHigh Performance Ajax Applications
High Performance Ajax Applications
Julien Lecomte
 

Mais procurados (20)

HTML 5 & CSS 3
HTML 5 & CSS 3HTML 5 & CSS 3
HTML 5 & CSS 3
 
iPhone Web Applications: HTML5, CSS3 & dev tips for iPhone development
iPhone Web Applications: HTML5, CSS3 & dev tips for iPhone developmentiPhone Web Applications: HTML5, CSS3 & dev tips for iPhone development
iPhone Web Applications: HTML5, CSS3 & dev tips for iPhone development
 
Real World Web Standards
Real World Web StandardsReal World Web Standards
Real World Web Standards
 
Whirlwind Tour of SVG (plus RaphaelJS)
Whirlwind Tour of SVG (plus RaphaelJS)Whirlwind Tour of SVG (plus RaphaelJS)
Whirlwind Tour of SVG (plus RaphaelJS)
 
Taking your Web App for a walk
Taking your Web App for a walkTaking your Web App for a walk
Taking your Web App for a walk
 
How to make Ajax work for you
How to make Ajax work for youHow to make Ajax work for you
How to make Ajax work for you
 
Keypoints html5
Keypoints html5Keypoints html5
Keypoints html5
 
The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015
 
Create responsive websites with Django, REST and AngularJS
Create responsive websites with Django, REST and AngularJSCreate responsive websites with Django, REST and AngularJS
Create responsive websites with Django, REST and AngularJS
 
jQuery in the [Aol.] Enterprise
jQuery in the [Aol.] EnterprisejQuery in the [Aol.] Enterprise
jQuery in the [Aol.] Enterprise
 
Ajax Security
Ajax SecurityAjax Security
Ajax Security
 
Introduction to jQuery Mobile - Web Deliver for All
Introduction to jQuery Mobile - Web Deliver for AllIntroduction to jQuery Mobile - Web Deliver for All
Introduction to jQuery Mobile - Web Deliver for All
 
ActiveDOM
ActiveDOMActiveDOM
ActiveDOM
 
jQuery
jQueryjQuery
jQuery
 
HTML5 and the web of tomorrow!
HTML5  and the  web of tomorrow!HTML5  and the  web of tomorrow!
HTML5 and the web of tomorrow!
 
High Performance Ajax Applications
High Performance Ajax ApplicationsHigh Performance Ajax Applications
High Performance Ajax Applications
 
Web Standards: Fueling Innovation [Web Design World Boston '08]
Web Standards: Fueling Innovation [Web Design World Boston '08]Web Standards: Fueling Innovation [Web Design World Boston '08]
Web Standards: Fueling Innovation [Web Design World Boston '08]
 
Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015
Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015
Why You Should be Using Web Components Right Now. And How. ForwardJS July 2015
 
HTML5: friend or foe (to Flash)?
HTML5: friend or foe (to Flash)?HTML5: friend or foe (to Flash)?
HTML5: friend or foe (to Flash)?
 
HTML5 JS APIs
HTML5 JS APIsHTML5 JS APIs
HTML5 JS APIs
 

Destaque

Destaque (6)

Javascript jQuery jQuery Ui
Javascript jQuery jQuery UiJavascript jQuery jQuery Ui
Javascript jQuery jQuery Ui
 
Sencha Touch for the Mobile Web
Sencha Touch for the Mobile WebSencha Touch for the Mobile Web
Sencha Touch for the Mobile Web
 
JQuery Mobile vs Appcelerator Titanium vs Sencha Touch
JQuery Mobile vs Appcelerator Titanium vs Sencha TouchJQuery Mobile vs Appcelerator Titanium vs Sencha Touch
JQuery Mobile vs Appcelerator Titanium vs Sencha Touch
 
Learning from the Best jQuery Plugins
Learning from the Best jQuery PluginsLearning from the Best jQuery Plugins
Learning from the Best jQuery Plugins
 
CSS/SVG Matrix Transforms
CSS/SVG Matrix TransformsCSS/SVG Matrix Transforms
CSS/SVG Matrix Transforms
 
jQuery Essentials
jQuery EssentialsjQuery Essentials
jQuery Essentials
 

Semelhante a jQuery UI and Plugins

Unobtrusive javascript with jQuery
Unobtrusive javascript with jQueryUnobtrusive javascript with jQuery
Unobtrusive javascript with jQuery
Angel Ruiz
 
Kick start with j query
Kick start with j queryKick start with j query
Kick start with j query
Md. Ziaul Haq
 
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
David Giard
 
Introduction to jQuery (Ajax Exp 2006)
Introduction to jQuery (Ajax Exp 2006)Introduction to jQuery (Ajax Exp 2006)
Introduction to jQuery (Ajax Exp 2006)
jeresig
 

Semelhante a jQuery UI and Plugins (20)

Jquery ui
Jquery uiJquery ui
Jquery ui
 
J queryui
J queryuiJ queryui
J queryui
 
Unobtrusive javascript with jQuery
Unobtrusive javascript with jQueryUnobtrusive javascript with jQuery
Unobtrusive javascript with jQuery
 
Kick start with j query
Kick start with j queryKick start with j query
Kick start with j query
 
jQuery Foot-Gun Features
jQuery Foot-Gun FeaturesjQuery Foot-Gun Features
jQuery Foot-Gun Features
 
jQuery for web development
jQuery for web developmentjQuery for web development
jQuery for web development
 
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
 
jQuery Loves Developers - Oredev 2009
jQuery Loves Developers - Oredev 2009jQuery Loves Developers - Oredev 2009
jQuery Loves Developers - Oredev 2009
 
Lotusphere 2012 Speedgeeking - jQuery & Domino, a RAD Combination
Lotusphere 2012 Speedgeeking - jQuery & Domino, a RAD CombinationLotusphere 2012 Speedgeeking - jQuery & Domino, a RAD Combination
Lotusphere 2012 Speedgeeking - jQuery & Domino, a RAD Combination
 
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)How I Learned to Stop Worrying and Love jQuery (Jan 2013)
How I Learned to Stop Worrying and Love jQuery (Jan 2013)
 
The Inclusive Web: hands-on with HTML5 and jQuery
The Inclusive Web: hands-on with HTML5 and jQueryThe Inclusive Web: hands-on with HTML5 and jQuery
The Inclusive Web: hands-on with HTML5 and jQuery
 
Introduction to jQuery (Ajax Exp 2006)
Introduction to jQuery (Ajax Exp 2006)Introduction to jQuery (Ajax Exp 2006)
Introduction to jQuery (Ajax Exp 2006)
 
How to increase Performance of Web Application using JQuery
How to increase Performance of Web Application using JQueryHow to increase Performance of Web Application using JQuery
How to increase Performance of Web Application using JQuery
 
Building iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" DominoBuilding iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" Domino
 
JQuery
JQueryJQuery
JQuery
 
JQuery
JQueryJQuery
JQuery
 
Javascript in Plone
Javascript in PloneJavascript in Plone
Javascript in Plone
 
J query training
J query trainingJ query training
J query training
 
Write Less Do More
Write Less Do MoreWrite Less Do More
Write Less Do More
 
Jquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript BasicsJquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript Basics
 

Último

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Último (20)

Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 

jQuery UI and Plugins