HoverIntent in Air America Header

Submission of a form on this page has been disabled as you do not have JavaScript enabled in your browser.

I've set up a sliding show schedule header for Air America, although unfortunately, you can't preview it yet. (That'll launch in April). I found a good use for the hoverIntent module there: when you scroll over a show icon, the upcoming show information will be displayed below. Usually, you would just use jQuery's .mouseOver event for that. However, using hoverIntent, it slows down the reaction, so if you zip your mouse past an icon, it won't automatically set the text: you'll instead need to intentionally point your mouse at it for half a second. I believe this makes the animation much smoother.

Views Slideshow uses that module if it's enabled as well. Note that hoverIntent requires jQ and (if you're using Drupal 5) jQuery Update.

Here's the snippet I used:

<?php
$hover
= module_invoke('jq', 'add', 'hoverIntent') ? 'hoverIntent' : 'hover';
foreach (
$upcoming_shows as $slot => $show) {
 
$js .= "  $('#node-$slot').$hover(function() { aar_shows_display_upcoming($slot); }, function() {} );\n";
}
?>

That's called in the document ready function, of course, and calls the following jQuery:

function aar_shows_display_upcoming(nid) {
  $('.aar-shows-schedule-upcoming').hide();
  $('#aar-shows-schedule-upcoming-' + nid).show();
}

Using the Zen theme, each show slot has a CSS ID of #node-[nid], such as #node-56323. Additionally, the view of the upcoming text, which is displayed below the show icons, each has an id of #aar-shows-schedule-upcoming-[nid], corresponding to that node. Thus, all the upcoming text slots are hidden, then just the one associated with that show is displayed.

Using a $hover variable allows us to set the hover function to 'hoverIntent' if that module is included, but deprecates to 'hover' if we've turned off the module, so that our site doesn't break, and works in a similar fashion.

Watch for it in April!

Aaron

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <strike> <p> <b> <i>
  • Lines and paragraphs break automatically.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.

More information about formatting options

To prevent automated spam submissions leave this field empty.