Author: Cesar Otero & Rob Larsen
Reviewer: Ian Elliot
jQuery is mostly easy to use - it would have to be to become so popular - but that doesn't mean that there aren't some more sophisticated bits to discover. Professional jQuery sounds as if it should help.
This is a book that is aimed beyond beginner level. In it you get a look at jQuery from the basics through to extras such as jQuery UI.
The first chapter is very introductory and just tells you what jQuery is good for. It shows you a basic example and discusses debugging jQuery.
Chapter 3 marks the start of the core of the book, which is a complete listing of every jQuery selector and method - or at any rate that's what it seems to be. Chapter 4 is about selectors and what you get is a reasonable presentation of how selectors work but nothing in the way of clever tricks, hints or tips. This is a straight presentation of what you can find in the documentation. At best it organizes the selectors in to sets of types - CSS, Attributes and so on.
Chapter 5 explains event handling and how jQuery allows you to approach it in a unified way. Unfortunately it first explains the old way of doing things using bind and then it presents the new way using on and off. What is the right way to explain events in jQuery? I think that you really only need to know about on and off with perhaps a quick look at the old ways just in case you bump into any older code.
Chapter 6 deals with forms and Ajax. Personally I would have preferred Ajax to get a chapter to itself with some examples and a deeper discussion.
The final chapter of the first part of the book deals with animation and special effects. I'm not sure why it includes a short section on the canvas element at the end - this is something jQuery doesn't really help with.
Part II is called Applied jQuery and you might think that this would be more advanced. In most cases, however, it is more a random collection of topics that aren't really core jQuery and not necessarily advanced. Chapter 8 introduces jQuery UI via ThemeRoller and some widgets which are introduced as per the documentation. Chapter 9 pushes forward with jQuery UI and explains the mouse interactions - drag and drop, selection and resizing.
Chapter 10 explains what approaches are most efficient and it includes some timings for the major browsers. This is interesting and well worth reading - to say it was worth the cost of the book is perhaps over stating the case but it is one of the best chapters. Unfortunately it is all too short and it almost leaves as many questions unanswered as it raises.
Chapter 11 moves outside of core jQuery to look at the template plugin. Of course if you look at one plugin there are a lot of others that might deserve coverage. The template plugin now seems to have been deprecated, so this chapter is already redundant.
Chapter 12 explains how to add your own plugins to jQuery and to jQuery UI. For me this read too much like an attempt at documentation with a few explanatory notes. A more coherent explanation of extending jQuery, an example and then extending jQuery UI with an example would have been better.
Chapter 13 is about asynchronous programing with deferred. and the final chapter is about unit testing with QUnit.
The main problem with this book is that it tends towards being a manual with added explanations. Sometimes the explanations are good and help you follow what is going one and how to use jQuery. At other times they are just long lists, usually in table form, of what variations on either methods or parameters there are. This is the sort of information that is best looked up online and while it helps to fill pages it doesn't really help the reader learn how to use jQuery.
There are some parts of this book that are very good. Chapter 10, for example, on practical jQuery. However, I also found that I would be reading an introduction to some topic only to lose sight of the basic idea in a flood of detail of one sort or another. The facts are there, but sometimes you have to dig to get them. It is a fairly thin book but the best thing that could happen to it is to lose 100 pages of tables and documentation-like coverage of jQuery.