310 likes | 593 Views
Introduction to jQuery (for Drupal). Amit Asaravala http://returncontrol.com amit@returncontrol.com “ aasarava ” on drupal.org. What is jQuery?. What is jQuery?. Magic. What is jQuery?. A JavaScript library: Makes writing JavaScript a lot easier
E N D
Introduction to jQuery(for Drupal) Amit Asaravala http://returncontrol.com amit@returncontrol.com “aasarava” on drupal.org
What is jQuery? • Magic
What is jQuery? • A JavaScript library: • Makes writing JavaScript a lot easier • Makes writing cross-browser compatible JavaScript a lot easier • Makes creating client-side interactivity a lot easier • Makes AJAX a lot easier
How Do I Get jQuery? • For Drupal 6 Sites: • jQuery 1.2.6 comes bundled • Loaded automatically (usually…) • Can use jquery_update module for jquery 1.3.2 • For Non-Drupal Sites: • http://docs.jquery.com/Downloading_jQuery • Get the “minified” version for production use
How Do I Use It: Non-Drupal <head> <script type=“javascript” src=“jquery.js”></script> <script type=“javascript”> //your jquery code goes here. go crazy! </script> </head>
How Do I Use It: Drupal Theme • Create a script.js file in your theme folder. • Your jQuery code goes in there.
How Do I Use It: Drupal Module • Create a mymodule.js file. • Use drupal_add_js() function in your module. mymodule_init() { $path = drupal_get_path(‘module’, ‘mymodule’); drupal_add_js($path . '/mymodule.js'); }
Writing jQuery • Series of statements • Each statement is usually a 3-step process: • Select an element • Attach an event (optional) • Specify what happens “For this heading, when the user clicks on it, I want monkeys to fly across the page.”
3-Step Process • Select element: jQuery( ‘h2’ ) • Attach an event: jQuery( ‘h2’ ).click( ) • Specify what happens: jQuery( ‘h2’ ).click( monkeysFly );
Your Final Statement jQuery(‘h2’).click( monkeysFly );
$horthand $(‘h2’).click( monkeysFly ); see example
More Selectors $(‘input’).click( monkeysFly ); $(‘.title’).click( monkeysFly ); $(‘#edit-title’).click( monkeysFly ); $(‘h2, h3, .title’).click( monkeysFly );
Monkey Code Inside script.js: $('h2').click( monkeysFly ); function monkeysFly() { $('img.monkey').fadeIn('slow'); }
Anonymous Functions $('h2').click( function() { $('img.monkey').fadeIn('slow'); } );
Anonymous Functions, 2 $('h2').click(function() { $('img.monkey').fadeIn('slow'); });
Wait ‘Til Browser is Ready $(document).ready(function() { $('h2').click(function() { $('img.monkey').fadeIn('slow'); }); });
Tool: Visual jQuery • http://visual.jquery.com/
Example: Dynamic Form Components • Show character count as user is typing?No problem!
Example: Dynamic Form Components Let’s do this in a module countchars.module: function countchars_init() { $path = drupal_get_path(‘module’, ‘countchars’); drupal_add_js( $path . ‘/countchars.js’); }
Example: Dynamic Form Components • countchars.js • $(document).ready(function() { • });
countchars.js • $(document).ready(function() { • $('#edit-title').keyup( function() { • }); • });
countchars.js $(document).ready(function() { $('#edit-title').after( '<div id="chars">characters: 0</div>' ); $('#edit-title').keyup( function() { }); });
Chaining • $(document).ready(function() { • $('#edit-title') • .after( '<div id="chars">characters: 0</div>' ) • .keyup( function() { • }); • });
countchars.js • $(document).ready(function() { • $('#edit-title') • .after( '<div id="chars">characters: 0</div>' ) • .keyup(function() { • var count = $('#edit-title').val().length; • $('#chars').html( 'characters: ' + count ); • }); • });
$(this) • $(document).ready(function() { • $('#edit-title') • .after( '<div id="chars">characters: 0</div>' ) • .keyup(function() { • var count = $(this).val().length; • $('#chars').html( 'characters: ' + count ); • }); • });
countchars.js • var count = $(this).val().length; • $('#chars').html( 'characters: ' + count ); • if(count < 15) { • $('.body-field-wrapper').fadeIn('slow'); • } • else { • $('.body-field-wrapper').fadeOut('slow'); • }
Resources • jquery.com -- main site • visual.jquery.com -- reference • jqueryui.com -- UI components • getfirebug.com -- inspecting/debugging • addons.mozilla.org/en-US/firefox/addon/60/-- web developer toolbar Contact • amit@returncontrol.com • http://returncontrol.com • http://parentingmode.com