jQuery is OpenAjax Compliant

Posted on by

OpenAjax Alliance

A new initiative has been forming, over the recent months, in an attempt to standardize the different Ajax and JavaScript codebases that exist. A number of corporate entities have come together to draft the new OpenAjax standard (including IBM, Adobe, Opera, and Mozilla).

Today we’re announcing a new plugin that you can use to make jQuery OpenAjax compliant. By doing this, jQuery is becoming one of the first projects that has made its codebase compliant with the new standard.

Currently, the requirements for compliance are, relatively, simple – but still quite important. The relevant rules can be summarized as such:

  • All libraries must register themselves (their name, version, and namespace) with the main OpenAjax library.
  • All libraries must register any global variables that they use (in the case of jQuery it’s ‘jQuery’, and optionally ‘$’ – it defaults to just including ‘jQuery’).
  • Any attempt to register “onload” or “onunload” handlers must go through the OpenAjax library. In the case of jQuery, if you do: $(window).load(function), and OpenAjax is included, jQuery will defer to OpenAjax’s solution.
  • Libraries must not disrupt the ability of other libraries to traverse the HTML DOM document.

You can view jQuery’s compliance results, to verify that it does, indeed, past the test suite.

If you wish to use jQuery in conjunction with other OpenAjax-capable libraries, the process is rather straight forward.

Step 1 Download a copy of the jQuery OpenAjax plugin to your server.

Step 2 Include the library in your site, just after you include jQuery.

<script src="jquery.js"></script>
<script src="jquery.openajax.js"></script>

Be sure to include both jQuery and the jQuery OpenAjax plugin after you’ve included the official OpenAjax library itself.

And that’s it! jQuery will now happily play with the OpenAjax core library.

It should be noted that, currently, jQuery is not part of the OpenAjax Alliance, but we’re in the process of applying and are eager to begin actively participating.

jQuery and Jack Slocum’s Ext

Posted on by

Ext JavaScript Library

Today, we’re proud to announce that the jQuery Project and Jack Slocum’s Ext Project, have partnered to integrate the amazingly lightweight and powerful jQuery framework with Ext’s awesome UI library. This collaboration will greatly enhance the capabilities of both projects and expand the functionality available to developers using the jQuery JavaScript Library and the Ext UI component suite.

Specifically, the upcoming Ext 1.0 release will be able to run, natively, on the jQuery JavaScript Library. No other libraries will be required. The jQuery and Ext teams are actively working together to bring this integration to the Ext codebase.

Here’s some possible questions and answers (feel free to post any others that you have in the comments):

What prompted the collaboration?

Ext has some fantastic components – arguably, the best on the web. jQuery has all the core functionality to support what Ext has. The jQuery team contacted Jack Slocum with the hopes that we could work together to add jQuery support to the Ext library, and Jack whole-heartedly agreed. It’s a win-win situation: jQuery gets some awesome components, Ext gets a huge influx of new users.

What are the benefits for jQuery and Ext users?

jQuery users gain a huge number of expertly-designed components that they will be able to deploy immediately. Additionally, they’ll be able to use them in a manner that better suits the jQuery philosophy (e.g. being able to call Ext queries on sets of elements, chaining calls, leveraging jQuery’s support for true unobtrusive DOM scripting etc.)

At the same time, existing Ext users will gain the flexibility of being able to continue to use Ext’s professional-caliber components while leveraging the lightweight, small (~19k) and powerful jQuery framework.

How will the two teams work together?

After the first beta release of Ext 1.0, jQuery will be providing a
strike team which will work to iron out all the integration points in Ext. At the same time, Jack will be working to isolate all the remaining framework-specific code, making it easier for us to finish the conversion process. All of this will be in place for Ext’s final 1.0 release, which will support both Yahoo UI and jQuery.

How will support be handled?

The jQuery team will be providing support for any bugs that may only exist in the jQuery version of Ext.

Support for Ext, itself, will continue to be handled via the Ext forums. The Ext project will also begin offering a level of paid support for its corporate users.

What Ext features will be included in Ext 1.0 for jQuery

All available Ext 1.0 features are going to be supported by jQuery.

The final feature list, for Ext 1.0, is still being finalized but a full breadth of new functionality can be expected.

When will Ext 1.0 for jQuery be available?

The final release date still has yet to be finalized and we will make a formal announcement on the jQuery blog, the jQuery mailing list, the Ext project site, and the Ext forums once the its ready to go.

An alpha release of Ext 1.0 was just released, but does not, yet, include the jQuery compatibility layer.

Do any licensing issues exist?

No. jQuery’s licensing will remain the same, and Ext 1.0 will be completely open source (LGPL).

Additionally, corporations will be able to purchase an Ext support license. This will include email support and SVN access, amongst other features.

Update: Digg this story up!

Examples

Here are examples of what you can do with Ext. (All demos currently run on Yahoo UI, as the Ext 1.0 alpha release doesn’t support jQuery.)

Paged, Dynamic, Grids

Ext Paged Grid

Mixed Content Menus

Ext Mixed Content Menus

Advanced Dialog Layout and Themes

Ext Dialog Layout

Message Box Dialog

Ext Message Box Dialog

Drag-and-Drop Trees

Ext Drag and Drop Trees

The jQuery IRC Channel

Posted on by

In addition to jQuery’s great Mailing List and Documentation, there’s another place where users can seek help about jQuery problems: We have a very active jQuery IRC channel.

Even though it’s never really been publicly announced, the channel currently averages over 50 simultaneous users, including some friendly jQuery bots! Hosted on irc.freenode.net, #jquery always has users who are online and willing to answer your questions (of which, they are often answered within minutes of their being asked).

Here’s the information that you will need in order to connect to the channel:
Server: irc.freenode.net
Room: #jquery

jQuery team members, especially John Resig (nick: JohnResig), Joern Zaefferer (nick: JoernZaefferer), and Yehuda Katz (nick: wycats) are frequently in attendance, helping experienced and new users alike with both complex and trivial problems.

The IRC Channel is best if you need quick help with any of the following:

  • JavaScript
  • jQuery Syntax
  • Problem Solving
  • Strange bugs

If your problem is more in-depth, we may ask you to post to the mailing list, or the bug tracker, so that we can help you in a more-suitable environment.

Additionally, we recently started logging the channel, so you can now look back through to find answers to your old problems: jQuery IRC channel Log

jQuery Nightly Builds

Posted on by

After much wailing and gnashing of teeth by certain members of the discussion mailing list (read: me), we now have automated nightly builds of jQuery ready for mass consumption. These builds came about at the request of we community members who would like to experiment with the most recent features of jQuery on our projects, but who, for whatever reason, find ourselves behind firewalls that restrict our access to the subversion repository.

Without further ado, here are the gory details: You can get your bleeding-edge-jQuery fix at http://jquery.com/src/nightlies/. This folder will simply show you a list of available files. There are 4 files in there in which most of you will be most interested…

  1. jquery-nightly.js – Pretty self-explainatory. It’s the uncompressed jQuery. Mmmm… fresh from the repository
  2. jquery-nightly.pack.js – As the more perceptive of you have already guessed, it’s the packed version of #1
  3. jquery-nightly.release.zip – This contains the docs, test suite, and all of the pre-built versions of jQuery
  4. jquery-nightly.build.zip – Is the real win for we poor souls behind the fiery-walls of the corporate world. It contains the full jquery path from the repo, and is everything you need to build your very own jQuery

The nightlies folder will also fill up with dated versions of all 4 of these files so that you can go find jQuery at whatever vintage you prefer.

New versions of the nightlies will be added every day at 2am EST (7am GMT), and will consist of the most recent revision from the subversion repository at that time.

If all of this talk of subversion, repositories, bleeding-edge, and nightly building makes the stability craving web deveoper inside you run away screaming, fear not. The stable release download you need is still right here waiting for you.

Thanks go to John Resig for hooking us up with the server-side magic that got this automated build process running (not to mention for the server, the bandwidth, and for jQuery in general :) ).

New jQuery Project Team Members

Posted on by

The jQuery team would like to welcome our newest team members, Yehuda Katz, Nate Cavanaugh, & Klaus Hartl. These three developers have made invaluable contributions to the jQuery projects in terms of time, knowledge and commitment to the community.

Yehuda is a developer living in New York City who maintains the web site Visual jQuery, and publishes the Visual jQuery Magazine. Additionally, he’s a frequent contributor to the jQuery Blog and promoter of good practices within the jQuery core. As a member of the evangelism team he’s working to help people discover jQuery; actively trying to find and promote jQuery to new users.

Nate is a designer living in California. He was responsible for the recent redesign of the jQuery site. He’s going to be helping to design new portions of the site, and help to bring outdated portions of the site inline with the rest. He’s also working to take a critical look at how using jQuery, as a design tool, can help to promote Unobtrusive design principals.

Klaus has been one of the most vocal supporter of jQuery and unobtrusive design on the jQuery mailing list. His ability to expertly explain quality, unobtrusive, solutions to problems is invaluable will be a tremendous boon to the jQuery project. Klaus will be working with both the Evangelism & Dev teams, to help promote jQuery and expand its reach as well as maintaining Thickbox and the Tabs plugin. He will also be spearheading the effort to make Tabs an official plugin.

We’re very pleased to be working with all of you and welcome you to the jQuery team.

New jQuery API Browser

Posted on by

The jQuery team continues to pump out additional tools and resources to make development using jQuery easy, efficient and productive. The latest addition to jQuery’s growing list of tools is project team lead Jorn Zaefferer’s new jQuery API Browser.

jQuery API Browser
Visit: http://jquery.bassistance.de/api-browser/

The jQuery API browser provides an intuitive interface to quickly find information on jQuery’s methods and properties. Features include:

  • Tabbed navigation
  • Treeview on categories
  • Quicksearch on both navigation and main content
  • Code highlighting for both HTML and JavaScript snippets
  • A vertical splitter that allows you to resize navigation/content panes
  • Highlighting selected methods in the content
  • Styled tooltips for method arguments

The API browser is available both online and as a download for local usage.

The jQuery project offers a comprehensive & ever-growing list of resources that will provide developers with documentation, tutorials, and plugins/widgets for their site development.

jQuery:
http://jquery.com/

Plugins & UI Widgets/Controls:
http://docs.jquery.com/Plugins

Documentation:
http://docs.jquery.com/Main_Page
http://www.visualjquery.com/
http://jquery.bassistance.de/api-browser/

Magazine:
http://www.visualjquery.com/magazine/

Mailing List:
http://jquery.com/discuss/

Project Blog:
https://blog.jquery.com/

Learning Resources:
http://docs.jquery.com/Tutorials
http://www.learningjquery.com/
http://15daysofjquery.com/

About
http://docs.jquery.com/Sites_Using_jQuery
http://docs.jquery.com/About/Contributors

Don’t forget to Digg up this article on Digg!

jQuery 1.1.1

Posted on by

The bug fix release for 1.1 is now ready for all to use. There were a lot of weird behaviors that were discovered post-1.1 that needed to be remedied sooner, rather than later. If you were having any difficulties with the 1.1 release, please try this new release to see if your problems were solved.

It is highly recommended that you upgrade.

As always, if you have any questions or concerns with new release, please feel free to discuss it on the jQuery Mailing List. If you think you’ve spotted a bug, please add it to the bug tracker.

Download

Every bug ever fixed with jQuery can be found on the main bug fixes list. The most important bug fixes, relevant to this release, are as follows:

  1. Setting the numerical value of a css property failed, for example: .css(“opacity”,0.5) (also occurred with zIndex, fontWeight)
  2. Calling $(…, jqobj) with a context of a jQuery object failed.
  3. Accessing a property on an element that doesn’t exist caused an error, for example: $(“#foobar”).attr(“id”)
  4. Calling .load() without a callback caused an error.
  5. You couldn’t cancel an event that was triggered using .trigger() or .click() (for example).
  6. .add()ing a single DOM element to a jQuery object was broken.
  7. Passing in undefined values to a $.post() caused weird errors to occur.
  8. Accessing child nodes within an example document didn’t work properly.
  9. jQuery.isFunction() was unable to reliably determine a function, in a cross-browser way.
  10. Triggering a .click() failed in IE.
  11. Triggered click handlers were executed twice in most browsers.
  12. A newline passed into $(“…”) caused Firefox to go into a never-ending loop.
  13. Calling $.post() without any data caused an error.
  14. Calling a descendant selector after a child selector caused strange results, for example: $(“ul > li ul”)
  15. Triggered events did not occur if an event handler was not bound for that event.

Interface 1.1 Released

Posted on by

The ever-popular, jQuery-based, Drag-and-Drop, Animation, and Widget library, Interface has just released version 1.1 to coincide with the release of jQuery 1.1.

Interface Color Picker

A couple things to note about this release:

  • The brand new animateClass, animateStyle, and animateColor handlers. You can now do an animation from one particular class, to another – and from one color, to another.
  • The speed of droppables and sortables has been vastly improved.
  • The documentation has been overhauled and is quite comprehensive now.
  • The download area has been reworked, and is completely interactive.
  • There’s a ton of demos to see. They’ve updated a bunch of the existing ones and added in some hot new ones, like: Color Picker, Image Cropper, Panorama View, and a Folder tree.

All-in-all, this is a fantastic release. If you haven’t taken the opportunity to check out Interface yet, I recommend that you do now.

jQuery Birthday: 1.1, New Site, New Docs

Posted on by

Great news, everyone! Today is jQuery’s 1 Year “Birthday”! (I released it 1 year ago, today, at BarCamp New York City) In celebration, we’ve got a bunch of stuff for you to enjoy.

1) jQuery 1.1

This is a great release – tons of bug fixes, huge speed improvements, and a big simplification of the outstanding API. It is highly recommend that you upgrade to get all the benefits of this release.

Download Now:

Upgrade Guide:

Please read through these guides before upgrading from 1.0.4 to 1.1 – a number of API changes have been made, and these guides detail how to work through them, and how to use the new jQuery 1.0 Compatibility Plugin to keep 1.0-style functionality in 1.1.

New Features:

  • By all of our counts, jQuery 1.1’s selectors are 10x-20x faster than those in jQuery 1.0.4. This should provide a noticable difference in your jQuery applications.
  • Common selectors like div#id, div .class, td:nth-child(1), and div > div are all significantly faster. It’s a complete world of difference. Try them out and you’ll see.
  • You can now pass in a function as a value for an attribute or a css property. The function is executed and its return value is set as the value for the property. For example:
    // 1.0 Code
    $("a").each(function(){
        $(this).attr("href", "/item/" + this.id);
    }).show();
    
    // 1.1 Code
    $("a").attr("href", function(){ return "/item/" + this.id; }).show();
  • You can now unbind an event handler from within itself. This allows you to have event handlers that are only bound for a specific number of executions, for example:
    $("button").click(function(e){
        // Unbind the event handler if a specific form is hidden
        if ( $("#submitForm").is(":hidden") ) {
            $(this).unbind( e );
        }
    });
  • Easily bind an event that will only occur once (this replaces the old .oneclick() functionality):
    // Show a thank you message for a form submission, but only once
    $("form").one("submit",function(){
        $("#thankyou").show();
    });
  • You can now set the text value of an element (this is different from .html(), where in .text() all HTML is displayed as text).
    $("pre").text("<b>Hello</b>, how are you?");
    
    // Result:
    <pre>&lt;b&gt;Hello&lt;/b&gt;, how are you?</pre>
  • You can now build your own filters, using a custom function. (This was in 1.0, but it wasn’t documented very well.)
    // Find all divs whose parent isn't hidden
    $("div").filter(function(){
      return $(this).parent(":hidden").length > 0;
    });
  • You can now pass a comma-separated list of selectors to the following filter functions:
    filter, find, not, siblings, parents, children, next, prev. This allows you to do some very cool stuff:

    // Find all radio buttons, or checkboxes, in a form
    $("form input").filter(":radio, :checkbox");
    
    // Find the next element that's a span, or a div
    $(this).next("span, div");

2) Refreshed Web Site Design

jQuery Site Screenshot
The design of the jQuery web site has finally be given a much-needed facelift. This was planned out by the fantastic jQuery Design Team and implemented by Nate Cavanaugh. The design team has a full redesign/restructuring planned, but we wanted something that would help us get from our current design to the complete overhaul. Hope you enjoy it – and be sure to thank Nate, Bradley, or Skye for their job well done!

3) Overhauled Documentation

A big point that we’ve been working with, lately, was to really pull together and categorize the jQuery Documentation, Tutorials, and API into one centralized location. The result of this effort is the new:
http://docs.jquery.com/
All jQuery documentation can be found in this one, central, location – making it easier for you to find what you need and get your work done faster. We hope you enjoy this new structuring, please let us know if you have any suggestions for what we can add to make it better.

4) A Secret…

We’ve been holding this one back a while, but we’re finally ready to let it go… There’s a jQuery Book in the works! An excited publisher has stepped up, and the authors are already a quarter of the way complete. There’s still some details in the works, and we’re going to tell all once its getting nearer to completion, but right now it’s looking like we’re going to have a late-Spring/early-Summer release of the first jQuery book!

Blank Book

I hope you enjoy everything – a lot of time and effort has really gone into making this release great. Be sure to thank everyone on the jQuery Team, they’ve put a lot of time and effort into making this release come out really good.

I’ll be doing a “State of the Query” post tomorrow, to talk about where jQuery has come during this past year, and the evangelism team will be doing a couple blog posts about what you can do with the new jQuery 1.1.

Thank you, everyone, for making this a fantastic first year for jQuery.