Karl's Archive

Quick Tip: Dynamically add an icon for external links

A common feature I’ve seen on “web 2.0” sites and wikis is the “external link” icon: external link. While I’m not crazy about the idea of sticking these little images all over the HTML, they’re a great candidate for using progressive enhancement. In our case, we can use jQuery to add the images pretty easily.

Read the rest of this entry »

jQuery Documentation Alternatives

As many of you have discovered by now, jquery.com and its subdomains have been offline intermittently over the past several weeks. On behalf of the jQuery Project Team, I apologize for any inconvenience this has caused.

John Resig is aware of the problem and is working with the hosting company to get things resolved as quickly as possible. In the meantime, Remy Sharp, who runs jQuery for Designers, has graciously provided a few alternatives for API documentation:

He also has the raw XML file of the jQuery documentation in an SVN repository hosted at googlecode.com.

Jörn Zaefferer also has a jQuery API Browser that lets you browse by category as well as alphabetically. Also, it can be downloaded as a zip file.

Many thanks to Remy and Jörn for these great resources.

Three Quick Ways to Avoid Widows

A few months ago I threw together a quick redesign of the Learning jQuery site. It’s nothing fancy, mind you, but I was itching to retire the thin veil covering the tired old WordPress Kubrick theme, so something had to be done.

Almost immediately upon changing the font-family and font-size of the blog post titles, I noticed a few unsightly widows (just to clarify, we’re talking about typographical widows. My mother already suspects me of avoiding her; I don’t want to add to her anxiety. ;) ).

Here is an example of one such widow: Read the rest of this entry »

Updated jQuery Bookmarklet

For the most recent version of the bookmarklet, see the Better, Stronger, Safer jQuerify Bookmarklet entry.

About 1 1/2 years ago I put together a little “jQuerify” Bookmarklet (and blogged about it here). It’s a nice little tool that allows you to play around with jQuery on a page that doesn’t already have jQuery loaded and see the results immediately. Based on feedback from others, I’ve updated the bookmarklet a bit. Now, it first checks to see if jQuery is already loaded on the page and doesn’t bother loading it if it’s there. Also, instead of showing an alert message, it temporarily places an absolutely positioned div at the top of the page with a message saying either “This page is now jQuerified” or “This page was already jQuerified.” After 2 1/2 seconds, the message fades out and is removed from the DOM. Here is what the script looks like before it is converted to bookmarklet format (replacing spaces with %20, etc.):

Read the rest of this entry »

Working with Events, part 2

In my last article, I described the common problem of events seemingly ceasing to work for new elements added to a document, whether by some form of ajax or by DOM modification. We examined one way to overcome the problem: Event Delegation. With event delegation, we bind the event handler to a containing element that remains in the DOM and then check for the target of the event.

Cloning Nodes

This time, we’ll take a look at re-binding event handlers. But before we do, I should mention that, as of jQuery version 1.2, event handlers can be cloned along with elements. Consider this unordered list:

Read the rest of this entry »

Working with Events, part 1

CSS and JavaScript are different in many ways, almost all of which are too obvious to mention. However, one difference between the two bears explanation, because it is often the cause of confusion and consternation, especially among those who are making the transition from CSS guru to jQuery novice. In fact, it was one of the first things I asked about on the jQuery mailing list back in 2006. Since then, I’ve seen at least one question on the subject every week, and sometimes as many as one per day—despite an FAQ page and these three plugins to help users deal with it.

How CSS and JavaScript Are Different

So, what’s this important difference?

Read the rest of this entry »