Learning jQuery 85
hal10001 writes "One complaint of just about any book that attempts to teach a new language or technology is a presumed level of expertise by the authors. I found it refreshing that in Learning jQuery the book begins... well, at the beginning, and increases in difficulty along with the concepts. It gives designers and entry-level interface developers the opportunity to come up to speed at an acceptable pace."Read below for the rest of Brian's thoughts on the book.
While I consider the screenshots to be lacking in quality, overall, this book will definitely leave you satisfied. The essentials required to be successful at developing with jQuery are all touched upon, and the depth of explanation for each piece of code is precise and clear. You will not find yourself flipping through chapters of fluff, added only to beef up the number of pages. Each tutorial and example is carefully planned and executed.
Learning jQuery | |
author | Jonathan Chaffer, Karl Swedberg |
pages | 352 |
publisher | Packt Publishing |
rating | 8/10 |
reviewer | Brian Reindel |
ISBN | 978-1-847192-50-9 |
summary | Better Interaction Design and Web Development with Simple JavaScript Techniques |
Describing concepts in relation to any JavaScript library can be difficult. Since libraries are in fact JavaScript, it can be easy to confuse beginners. The authors are careful not to allow this to happen. This is especially apparent in Chapter 3, when highlighting the event model, event capturing and event bubbling. A clear distinction is made between browser implementations and the unique facets of jQuery. Official documentation is often wanting in these areas, and the book fills in the gaps nicely.
Throughout Learning jQuery, additional notation is included to subtly remind developers of any potential gotchas, which is a nice feature. For instance, while referencing the clone() method, it was noted that only elements of the DOM are copied, and not the events previously associated with those elements. These tips are always appreciated, since in a development environment they can prevent hours of head-scratching, and help eliminate frustration.
I was also impressed that the authors cover both JSON and XML as data-interchange formats in Chapter 6, AJAX-How to Make Your Site Buzzword-Compliant. This illustrates conformity not to a single standard, but to real-world development scenarios, where you might encounter both formats. My only complaint here is that not enough time was spent specifically on jQuery's $.ajax() method for AJAX implementations, since in my experience this tends to be more popular than the $.get() method.
The only change I would make to the format of the book would be to divide it into two parts. It is obvious that the authors intended to begin with jQuery key concepts, and then move into cookbook mode. This does happen after Chapter 6, but it would have been helpful to make that distinction more evident. If you do buy the book, be aware that in order to digest these great tutorials, that you should dedicate more time for the latter half of the book.
Finally, I would like to add that although this book does not cover jQuery v.1.2, or the UI plugin, it is still worth the purchase. If you use the latest version of jQuery, and still want to implement the same XPath selectors covered in the book, you just need to download a plugin. You will not find a better resource online for getting into the guts of the jQuery JavaScript library than you will offline reading the book Learning jQuery.
You can purchase Learning jQuery from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
what is jquery? (Score:5, Informative)
jquery [jquery.com] This seems like a good place to start.
Re: (Score:2)
Re: (Score:1, Insightful)
Of course that will be for people with 5+ years experience in it.
Re: (Score:1, Informative)
No, it's not Yet Another Language. It's a JavaScript library, and it's quite easy to have 5+ years experience with JavaScript.
Re: (Score:2)
Re: (Score:2)
Are you saying that no one needs/wants/understands JavaScript or jQuery? If you want to use JavaScript for your web applications jQuery is an awesome way to do it. It's simple to understand and really helps you approach JavaScript in a whole new, non-invasive, way. The fact that it uses CSS selectors is great because it really encourages you to use a good design that separates structure, presentation, and behavior. This
Re: (Score:1)
Re:what is jquery? (Score:5, Insightful)
My evolution went from using prototype to investigating scriptaculous, mootools and YUI - none of which lasted very long as quite frankly they *seemed* more like toys to animate elements on the page rather than providing a clean and transparent way of sending/retrieving data and altering the data on the page. They were quite good at what they did (or their demos showed) but never really seemed to address what I was trying to accomplish. YUI was also VERY cool, but also very bloated feeling and cumbersome to actually use. Put simply, I am much more interested in things like JSON, REST and POX than the various libraries to help transition between those "transports" and display on the page.
A while back, maybe a year or possibly a bit more, I was introduced to jQuery by another developer and based on his recommendation decided to check it out. I wasn't quite ready to switch over from prototype (which seemed to more closely resemble the custom JS I would write) and adopt a new kind of similar yet strange syntax from a library I didn't quite have an appreciation of. After adopting it for one project to force myself to learn and use it, I have since whole heartedly switched over from prototype and now love and endorse jQuery as the default AJAX library (I hate to call it that, since it really does so much more). Quite honestly I think each of the "major" libraries out there has many benefits, and I am sure you can cite a great variety of reasons why product x is better than product y so check out what is there and see which one is really going to help you the most. If I was doing complex UI manipulation stuff, I would probably look at scriptaculous or mootools again, although the preview for jQuery UI looks promising as well.
*Disclaimer/Note: this is just my personal experience with them and should not reflect anything on the actual product. I fully recommend checking out the various options to see what works best for you.
Re: (Score:2)
I'm not too impressed with JQuery UI Interface library OTOH. seems bloated and buggy last time I tried it out.
Re: (Score:3, Informative)
Faster, smaller and more modular? Firstly, if you are worrying about the speed at which your JavaScript executes, you are almost certainly either prematurely optimising or using way too much JavaScript. Only a minority of developers need to worry about that, even assuming older clients. Having said that, the release notes for jQuery 1.1.3 [jquery.com] have some interesting notes regarding the benchmark you refer to:
"more modular" == "well written"? Seriously? (Score:2)
Leaving aside that jQuery has some substantial claims to being fast (fastest in IE6) and small (26k packed, vs MooTools 40+k packed)...
If the prevailing philosophy amongst the mootools team is in fact "more modular" == "well written" then that explains a good deal. Take a look at the download page:
http://mootools.net/download [mootools.net]
Notice anything? There's a pretty sweet app that knows which parts of MooTools are dependent on the ot
Re: (Score:3, Funny)
Nope. The reason why I don't notice anything is because the contrast between the text and the background is so low that the text is invisible unless I crank up the gamma on my monitor, and even when I do so, the text is unreadable because it's absolutely tiny. They've actually hard-coded a 9px font size in there. Ridiculous.
What's more, they specify the OS X font Lucida Grande, which has a large x-height, followed
Re: (Score:2)
Disclaimer: the following is based on very limited experience with MooTools.
Mootools refuses to namespace their library and redefines the 'Element'. This can (and will) lead to conflicts with other JavaScript libraries. jQuery is fully namespaced and provides a "noConflict" mode so that you can be sure it will play well with others. I would consider that "more modular".
JQuery in a nutshell (Score:1, Troll)
Sound good?
Competition on the way (Score:1, Informative)
Re: (Score:1)
Bravo (Score:4, Insightful)
Re: (Score:1)
Well? Well? (Score:2, Insightful)
Re: (Score:1)
Re: (Score:1)
Re: (Score:1)
Poor Choice of Name (Score:1, Insightful)
It would be like creating UltraLib.NET... exclusively for the Java platform.
Re: (Score:1, Informative)
Re: (Score:1, Interesting)
Re: (Score:1, Insightful)
Re: (Score:1)
Re: (Score:2)
es? esQuery. It's a bit Spanish though.
oldie but a goodie (Score:5, Informative)
http://www.visualjquery.com/ [visualjquery.com]
Expertise assumed by authors? (Score:3, Interesting)
Actually I have the exact opposite experience: whenever I try to buy a book for a new language (or whatever) they always assume that I'm starting right from the beginning, to the point of explaining what an "if" statement and a "for" loop are for. I'm sorry, but if I'm learning C++ or Perl it's pretty unlikely that it's going to be my first computer language.
I know it's difficult to get the level right but not every book has to be 1000 pages long with full colour screen-shots...
Re: (Score:2)
"
Generally aspeaking, that's not true at all.
My wish is that id the use the worded "Advanced" on the cover, then they would for go all the basic 'if' and 'for' statements.
Re: (Score:2, Funny)
Re: (Score:1)
Re: (Score:2)
It was my chief complaint with this jQuery-book (we have it at work).
The actual nuts-and-bolts of jquery are explained clearly and nicely.
Not many people are reading a book on an advanced, abstracted javascript-library, yet unaware that, for example, HTML has tags, tags are wrapped in less-than and greater-than signs, many tags have an opening and a corresponding end-tag, HTML is often transported over http and any number of other basic concepts that the book saw fit to explain.
Inde
AJAX Frameworks (Score:5, Informative)
1. YUI has been object-oriented to the point of uselessness. Everything requires YAHOO.blah.blah.blah(YAHOO.EventUtil.blah.blah.blah), and then they want you to have another line with YAHOO.AddListener.blah.blah(yourFunction) to add it to the execution list. I like objects. Wait, let me clarify, I like MY objects! I stopped doing what they asked and starting writing wrapper functions to their functions.
2. GWT requires a zillion steps. I spent half a day installing a Java IDE and compiler and running example projects to see how to use it. Perhaps this is useful for massive projects like Gmail, but for the rest of us who are just looking to add a few effects, instead of writing Java to generate JavaScript, you are better off just writing the JavaScript directly.
3. The Scriptaculous documentation seemed nonexistent. I was trying to find meaty documentation, and every page was essentially "LOOK WHAT I CAN DO!1!11"
In short:
1. YUI has a zillion files and still leaves you writing tedious DOM and your HTML ugly. They DO have some good stuff, which I will get to later.
2. GWT is like installing MS Word when you all needed was a good text editor.
3. Scriptaculous will leave you hanging.
(Side Note: I was just learning DOM when I tried out Scriptaculous. The bad taste may be the learning curve all beginner's must go through).
My recommendation:
-Go with jQuery + YUI's "reset-fonts-grids.css" file.
That YUI css file will reset all the browser defaults to an even layout saving you tons cross-browser tweaking. (Some things I disagree with though, like no bullets or numbers on your UL and OL tags. Still worth it though.) YUI Grids also has some nice templates to help you with div-based layouts. They have a few added extras too beyond just JavaScript code libraries.
jQuery is simply the most elegant and concise JavaScript library I've found. The idea behind it, "find this, and then do that", is great. The code looks simple, and your HTML code is left clean! People have developed modules for it too, so I may can replace my YUI added extras and just worry about 1 code library.
Hope that helps someone,
Dan
Re: (Score:1, Informative)
Re: (Score:1)
Re: (Score:1)
-Dan
Re: (Score:3, Informative)
Re: (Score:2)
You're confusing two different things here; JavaScript and the DOM. The DOM isn't part of the JavaScript language, it's merely a series of host objects following an interface defined by the W3C. While you can debate the merits of the two different interfaces all you like, it doesn't mean that using one instead of the other means you don't know JavaScript.
If somebody can't "methodically code a program", then they are going to have just as much difficulty with jQuery as they are with the DOM. jQuery ca
Re: (Score:1)
I started using jQuery about 2 years ago because I found it much easier to learn th
Re: (Score:1)
That YUI css file will reset all the browser defaults to an even layout saving you tons cross-browser tweaking. (Some things I disagree with though, like no bullets or numbers on your UL and OL tags. Still worth it though.)
Font sizing? I appreciate that I haven't looked into the YUI css. However, one of my favourite pieces of CSS is:
body{
font:62.5%/140% Verdana, Arial, Helvetica, sans-serif;
}
This is kind of a 'magic calculation' - setting the font size to 10px on every relatively modern browser. From then on in, percentages can be used to increase sizing uniformly.
My other two standard defaults are:
1. Setting everything (*) to margin:0 and padding:0 and lists to have no list-style-type. I personally prefer this -
Re: (Score:1)
I find the default font size too large for my liking, so I reduced it in my browser settings. Now your website layout is totally screwed up because you thought you could depend on 1em being equal to 10px.
Test it yourself. Set (browser default) font sizes to 10px, 20px or 30px and load a test site - the font sizes are the same (i.e. the 10px that CSS sets it to) across all browsers. And yes, using EM measurements for anything other than text measurements (line-height etc) would be a little silly.
Percentages aren't supposed to increase sizing uniformly. That's why they are percentages and not absolute units!
If I know that a font-size of 100% is 10px on all browsers, then 110% is 11px, 120% is 12px - used for headings etc.
So people who use the keyboard to navigate are totally unable to see where they are tabbing to?
No, you give a:focus the same styling as a:hover (underline, colour change) so it's still clear w
Re: (Score:1)
It provides clean fully implemented widgets and it also supports integration with jquery and other libraries.
I have not found I library that competes with Ext JS and continues being Open Source Just Check it out extjs.com
What about Dojo? (Score:1)
What about Dojo? The most popular Javascript framework, supported by IBM.
Basically if you do any kind of serious development you have one of therree choices:
GWT- which requires that you program in Java and onform to their configuration management model
YUI - If you are mad and willing to use bloated, slow and badly performing library
Dojo - none of the above.
lost in DOM caves (Score:2)
At least lets give the idea a good hard thinkover.
[1] Perhaps using a "dynamic" version of relational that has optional types and optional column size limits, and maybe something more powerful/flexible than SQL as a
Re: (Score:1)
Re: (Score:1)
I am not quite sure what the implication is here. "Table" is only a conceptual presentation view. You can store 3D coordinates, or 11D coordinates if you want. How you display them in actual space depends on the display device and transformation views you use.
Re: (Score:1)
You're still looking at it from a two-dimensional point of view. Not the data you store, but your data-storage mechanism. There are two axes in a table:
What if you
Re: (Score:1)
Re: (Score:1)
Re: (Score:2)
Do you have a reference for this? As I understand it, the specification was written in a generic way precisely so different languages could implement the exact same interface. If you are referring to this text from the DOM 1 specification [w3.org]:
Re: (Score:1)
Re: (Score:1)
With all due respect, that's just a bunch of hand-waving that is so vague it's impossible to extract anything relevant to my comment. Of course there are multiple potential interfaces to perform the same thing. That's always true, obvious to everybody, and isn't relevant to the fact that the DOM defines just one canonical interface.
Re: (Score:2)
Documents are hierarchical by their nature. DOM has lousy syntax, but that doesn't make it the wrong data structure.
Re: (Score:1)
I disagree. They can be made hierarchical, but I see nothing that says they must be. Besides, relational is perfectly capable of representing hierarchical structures if need be. It ideally "sees" hierarchies as ONE OF MANY possible views of given information, which is how it should be. There is no One Right View that is ideal for everything. Something "has-a" parent, not necessarily "is-a" parent.
Re: (Score:1)
I believe the World Wide Web and a href beg to differ. Links simply exist to join document fragments together non-hierarchically.
Re: (Score:2, Interesting)
It makes more no sense to shoehorn relational concepts into something -- a Document -- that is inherently non-relational than it does to shoehorn hierarchical concepts into something inherently relational.
I am more than willing to be proven wrong, however; if you think it is a good idea, you could pretty easily build a jQuery plugin to provide SQL-like access to elements in a document. It would be a good test bed for your ideas that would require
Re: (Score:1)
Please clarify what you mean by "non-relational". How are you measuring "relational-ness"?
Re: (Score:1)
Various versions of FoxPro have actually done this. The GUI screen specifications were stored in tables. However, it was not very well designed IMO, and was based on coordinate screens (a good GUI engine would allow both coordi
Perhaps some way of "querying" the document? (Score:3, Informative)
You mean some sort of method of accessing it via flexible symbolic queries describing attributes and relationships between nodes? One that retrieved arrays of matching results?
If only someone had invented such a thing [jquery.com].
(To be fair, most of the other libraries have something similar as well.)
Re: (Score:1)
Realize first that the DOM is essentially a tree structure, with pockets of collections or arrays of same/similar objects. You can indeed treat it like a relational database, but keep in mind that just about all objects are children, and many are parents.
Those
Very good, and very easy (Score:2, Interesting)
Ext (Score:2)
-- For Shizzle [wi-fizzle.com]
Re: (Score:2)
ExtJS appears to have interesting license requirements [extjs.com].
It is released under a commercial license and LGPL 3, but only for certain uses.
Complaint? More like praise (Score:2)
I'm going to dispute this assertion. I'm sick and tired of browsing through programming books at Chapters, picking up a copy of 'Advanced Python: Things that Guido van Rossam Doesn't Know' and having it start with four chapters on 'What is a programming language?' and 'What is a variable?', treating the user like a simpleton for the majority of the book, before spending t
Books about tech? (Score:1)
Re: (Score:2)
Another endorsement for the book (Score:1)
Like a lot of other people, I've looked at a number of JavaScript libraries and decided that jQuery was the best fit for my needs. What a