jquery.js
上传用户:linhai
上传日期:2022-07-24
资源大小:184k
文件大小:178k
源码类别:

企业管理

开发平台:

Others

  1.  * @before <p>Hello</p>
  2.  * @result [ <p style="display: none">Hello</p> ]
  3.  *
  4.  * var pass = true, div = $("div");
  5.  * div.hide().each(function(){
  6.  *   if ( this.style.display != "none" ) pass = false;
  7.  * });
  8.  * ok( pass, "Hide" );
  9.  *
  10.  * @name hide
  11.  * @type jQuery
  12.  * @cat Effects
  13.  */
  14. hide: function(){
  15. this.oldblock = this.oldblock || jQuery.css(this,"display");
  16. if ( this.oldblock == "none" )
  17. this.oldblock = "block";
  18. this.style.display = "none";
  19. },
  20. /**
  21.  * Toggles each of the set of matched elements. If they are shown,
  22.  * toggle makes them hidden. If they are hidden, toggle
  23.  * makes them shown.
  24.  *
  25.  * @example $("p").toggle()
  26.  * @before <p>Hello</p><p style="display: none">Hello Again</p>
  27.  * @result [ <p style="display: none">Hello</p>, <p style="display: block">Hello Again</p> ]
  28.  *
  29.  * @name toggle
  30.  * @type jQuery
  31.  * @cat Effects
  32.  */
  33. toggle: function(){
  34. jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ].apply( jQuery(this), arguments );
  35. },
  36. /**
  37.  * Adds the specified class to each of the set of matched elements.
  38.  *
  39.  * @example $("p").addClass("selected")
  40.  * @before <p>Hello</p>
  41.  * @result [ <p class="selected">Hello</p> ]
  42.  *
  43.  * @test var div = $("div");
  44.  * div.addClass("test");
  45.  * var pass = true;
  46.  * for ( var i = 0; i < div.size(); i++ ) {
  47.  *  if ( div.get(i).className.indexOf("test") == -1 ) pass = false;
  48.  * }
  49.  * ok( pass, "Add Class" );
  50.  *
  51.  * @name addClass
  52.  * @type jQuery
  53.  * @param String class A CSS class to add to the elements
  54.  * @cat DOM
  55.  */
  56. addClass: function(c){
  57. jQuery.className.add(this,c);
  58. },
  59. /**
  60.  * Removes the specified class from the set of matched elements.
  61.  *
  62.  * @example $("p").removeClass("selected")
  63.  * @before <p class="selected">Hello</p>
  64.  * @result [ <p>Hello</p> ]
  65.  *
  66.  * @test var div = $("div").addClass("test");
  67.  * div.removeClass("test");
  68.  * var pass = true;
  69.  * for ( var i = 0; i < div.size(); i++ ) {
  70.  *  if ( div.get(i).className.indexOf("test") != -1 ) pass = false;
  71.  * }
  72.  * ok( pass, "Remove Class" );
  73.  *
  74.  * @name removeClass
  75.  * @type jQuery
  76.  * @param String class A CSS class to remove from the elements
  77.  * @cat DOM
  78.  */
  79. removeClass: function(c){
  80. jQuery.className.remove(this,c);
  81. },
  82. /**
  83.  * Adds the specified class if it is present, removes it if it is
  84.  * not present.
  85.  *
  86.  * @example $("p").toggleClass("selected")
  87.  * @before <p>Hello</p><p class="selected">Hello Again</p>
  88.  * @result [ <p class="selected">Hello</p>, <p>Hello Again</p> ]
  89.  *
  90.  * @name toggleClass
  91.  * @type jQuery
  92.  * @param String class A CSS class with which to toggle the elements
  93.  * @cat DOM
  94.  */
  95. toggleClass: function( c ){
  96. jQuery.className[ jQuery.className.has(this,c) ? "remove" : "add" ](this,c);
  97. },
  98. /**
  99.  * Removes all matched elements from the DOM. This does NOT remove them from the
  100.  * jQuery object, allowing you to use the matched elements further.
  101.  *
  102.  * @example $("p").remove();
  103.  * @before <p>Hello</p> how are <p>you?</p>
  104.  * @result how are
  105.  *
  106.  * @name remove
  107.  * @type jQuery
  108.  * @cat DOM/Manipulation
  109.  */
  110. /**
  111.  * Removes only elements (out of the list of matched elements) that match
  112.  * the specified jQuery expression. This does NOT remove them from the
  113.  * jQuery object, allowing you to use the matched elements further.
  114.  *
  115.  * @example $("p").remove(".hello");
  116.  * @before <p class="hello">Hello</p> how are <p>you?</p>
  117.  * @result how are <p>you?</p>
  118.  *
  119.  * @name remove
  120.  * @type jQuery
  121.  * @param String expr A jQuery expression to filter elements by.
  122.  * @cat DOM/Manipulation
  123.  */
  124. remove: function(a){
  125. if ( !a || jQuery.filter( a, [this] ).r )
  126. this.parentNode.removeChild( this );
  127. },
  128. /**
  129.  * Removes all child nodes from the set of matched elements.
  130.  *
  131.  * @example $("p").empty()
  132.  * @before <p>Hello, <span>Person</span> <a href="#">and person</a></p>
  133.  * @result [ <p></p> ]
  134.  *
  135.  * @name empty
  136.  * @type jQuery
  137.  * @cat DOM/Manipulation
  138.  */
  139. empty: function(){
  140. while ( this.firstChild )
  141. this.removeChild( this.firstChild );
  142. },
  143. /**
  144.  * Binds a particular event (like click) to a each of a set of match elements.
  145.  *
  146.  * @example $("p").bind( "click", function() { alert("Hello"); } )
  147.  * @before <p>Hello</p>
  148.  * @result [ <p>Hello</p> ]
  149.  *
  150.  * Cancel a default action and prevent it from bubbling by returning false
  151.  * from your function.
  152.  *
  153.  * @example $("form").bind( "submit", function() { return false; } )
  154.  *
  155.  * Cancel a default action by using the preventDefault method.
  156.  *
  157.  * @example $("form").bind( "submit", function() { e.preventDefault(); } )
  158.  *
  159.  * Stop an event from bubbling by using the stopPropogation method.
  160.  *
  161.  * @example $("form").bind( "submit", function() { e.stopPropogation(); } )
  162.  *
  163.  * @name bind
  164.  * @type jQuery
  165.  * @param String type An event type
  166.  * @param Function fn A function to bind to the event on each of the set of matched elements
  167.  * @cat Events
  168.  */
  169. bind: function( type, fn ) {
  170. if ( fn.constructor == String )
  171. fn = new Function("e", ( !fn.indexOf(".") ? "jQuery(this)" : "return " ) + fn);
  172. jQuery.event.add( this, type, fn );
  173. },
  174. /**
  175.  * The opposite of bind, removes a bound event from each of the matched
  176.  * elements. You must pass the identical function that was used in the original
  177.  * bind method.
  178.  *
  179.  * @example $("p").unbind( "click", function() { alert("Hello"); } )
  180.  * @before <p onclick="alert('Hello');">Hello</p>
  181.  * @result [ <p>Hello</p> ]
  182.  *
  183.  * @name unbind
  184.  * @type jQuery
  185.  * @param String type An event type
  186.  * @param Function fn A function to unbind from the event on each of the set of matched elements
  187.  * @cat Events
  188.  */
  189. /**
  190.  * Removes all bound events of a particular type from each of the matched
  191.  * elements.
  192.  *
  193.  * @example $("p").unbind( "click" )
  194.  * @before <p onclick="alert('Hello');">Hello</p>
  195.  * @result [ <p>Hello</p> ]
  196.  *
  197.  * @name unbind
  198.  * @type jQuery
  199.  * @param String type An event type
  200.  * @cat Events
  201.  */
  202. /**
  203.  * Removes all bound events from each of the matched elements.
  204.  *
  205.  * @example $("p").unbind()
  206.  * @before <p onclick="alert('Hello');">Hello</p>
  207.  * @result [ <p>Hello</p> ]
  208.  *
  209.  * @name unbind
  210.  * @type jQuery
  211.  * @cat Events
  212.  */
  213. unbind: function( type, fn ) {
  214. jQuery.event.remove( this, type, fn );
  215. },
  216. /**
  217.  * Trigger a type of event on every matched element.
  218.  *
  219.  * @example $("p").trigger("click")
  220.  * @before <p click="alert('hello')">Hello</p>
  221.  * @result alert('hello')
  222.  *
  223.  * @name trigger
  224.  * @type jQuery
  225.  * @param String type An event type to trigger.
  226.  * @cat Events
  227.  */
  228. trigger: function( type, data ) {
  229. jQuery.event.trigger( type, data, this );
  230. }
  231. }
  232. };
  233. jQuery.init();
  234. jQuery.fn.extend({
  235. // We're overriding the old toggle function, so
  236. // remember it for later
  237. _toggle: jQuery.fn.toggle,
  238. /**
  239.  * Toggle between two function calls every other click.
  240.  * Whenever a matched element is clicked, the first specified function 
  241.  * is fired, when clicked again, the second is fired. All subsequent 
  242.  * clicks continue to rotate through the two functions.
  243.  *
  244.  * @example $("p").toggle(function(){
  245.  *   $(this).addClass("selected");
  246.  * },function(){
  247.  *   $(this).removeClass("selected");
  248.  * });
  249.  * 
  250.  * var count = 0;
  251.  * var fn1 = function() { count++; }
  252.  * var fn2 = function() { count--; }
  253.  * var link = $('#mark');
  254.  * link.click().toggle(fn1, fn2).click().click().click().click().click();
  255.  * ok( count == 1, "Check for toggle(fn, fn)" );
  256.  *
  257.  * @name toggle
  258.  * @type jQuery
  259.  * @param Function even The function to execute on every even click.
  260.  * @param Function odd The function to execute on every odd click.
  261.  * @cat Events
  262.  */
  263. toggle: function(a,b) {
  264. // If two functions are passed in, we're
  265. // toggling on a click
  266. return a && b && a.constructor == Function && b.constructor == Function ? this.click(function(e){
  267. // Figure out which function to execute
  268. this.last = this.last == a ? b : a;
  269. // Make sure that clicks stop
  270. e.preventDefault();
  271. // and execute the function
  272. return this.last.apply( this, [e] ) || false;
  273. }) :
  274. // Otherwise, execute the old toggle function
  275. this._toggle.apply( this, arguments );
  276. },
  277. /**
  278.  * A method for simulating hovering (moving the mouse on, and off,
  279.  * an object). This is a custom method which provides an 'in' to a 
  280.  * frequent task.
  281.  *
  282.  * Whenever the mouse cursor is moved over a matched 
  283.  * element, the first specified function is fired. Whenever the mouse 
  284.  * moves off of the element, the second specified function fires. 
  285.  * Additionally, checks are in place to see if the mouse is still within 
  286.  * the specified element itself (for example, an image inside of a div), 
  287.  * and if it is, it will continue to 'hover', and not move out 
  288.  * (a common error in using a mouseout event handler).
  289.  *
  290.  * @example $("p").hover(function(){
  291.  *   $(this).addClass("over");
  292.  * },function(){
  293.  *   $(this).addClass("out");
  294.  * });
  295.  *
  296.  * @name hover
  297.  * @type jQuery
  298.  * @param Function over The function to fire whenever the mouse is moved over a matched element.
  299.  * @param Function out The function to fire whenever the mouse is moved off of a matched element.
  300.  * @cat Events
  301.  */
  302. hover: function(f,g) {
  303. // A private function for haandling mouse 'hovering'
  304. function handleHover(e) {
  305. // Check if mouse(over|out) are still within the same parent element
  306. var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget;
  307. // Traverse up the tree
  308. while ( p && p != this ) p = p.parentNode;
  309. // If we actually just moused on to a sub-element, ignore it
  310. if ( p == this ) return false;
  311. // Execute the right function
  312. return (e.type == "mouseover" ? f : g).apply(this, [e]);
  313. }
  314. // Bind the function to the two event listeners
  315. return this.mouseover(handleHover).mouseout(handleHover);
  316. },
  317. /**
  318.  * Bind a function to be executed whenever the DOM is ready to be
  319.  * traversed and manipulated. This is probably the most important 
  320.  * function included in the event module, as it can greatly improve
  321.  * the response times of your web applications.
  322.  *
  323.  * In a nutshell, this is a solid replacement for using window.onload, 
  324.  * and attaching a function to that. By using this method, your bound Function 
  325.  * will be called the instant the DOM is ready to be read and manipulated, 
  326.  * which is exactly what 99.99% of all Javascript code needs to run.
  327.  * 
  328.  * Please ensure you have no code in your &lt;body&gt; onload event handler, 
  329.  * otherwise $(document).ready() may not fire.
  330.  *
  331.  * @example $(document).ready(function(){ Your code here... });
  332.  *
  333.  * @name ready
  334.  * @type jQuery
  335.  * @param Function fn The function to be executed when the DOM is ready.
  336.  * @cat Events
  337.  */
  338. ready: function(f) {
  339. // If the DOM is already ready
  340. if ( jQuery.isReady )
  341. // Execute the function immediately
  342. f.apply( document );
  343. // Otherwise, remember the function for later
  344. else {
  345. // Add the function to the wait list
  346. jQuery.readyList.push( f );
  347. }
  348. return this;
  349. }
  350. });
  351. jQuery.extend({
  352. /*
  353.  * All the code that makes DOM Ready work nicely.
  354.  */
  355. isReady: false,
  356. readyList: [],
  357. // Handle when the DOM is ready
  358. ready: function() {
  359. // Make sure that the DOM is not already loaded
  360. if ( !jQuery.isReady ) {
  361. // Remember that the DOM is ready
  362. jQuery.isReady = true;
  363. // If there are functions bound, to execute
  364. if ( jQuery.readyList ) {
  365. // Execute all of them
  366. for ( var i = 0; i < jQuery.readyList.length; i++ )
  367. jQuery.readyList[i].apply( document );
  368. // Reset the list of functions
  369. jQuery.readyList = null;
  370. }
  371. }
  372. }
  373. });
  374. new function(){
  375. /**
  376.  * Bind a function to the scroll event of each matched element.
  377.  *
  378.  * @example $("p").scroll( function() { alert("Hello"); } );
  379.  * @before <p>Hello</p>
  380.  * @result <p onscroll="alert('Hello');">Hello</p>
  381.  *
  382.  * @name scroll
  383.  * @type jQuery
  384.  * @param Function fn A function to bind to the scroll event on each of the matched elements.
  385.  * @cat Events/Browser
  386.  */
  387. /**
  388.  * Trigger the scroll event of each matched element. This causes all of the functions
  389.  * that have been bound to thet scroll event to be executed.
  390.  *
  391.  * @example $("p").scroll();
  392.  * @before <p onscroll="alert('Hello');">Hello</p>
  393.  * @result alert('Hello');
  394.  *
  395.  * @name scroll
  396.  * @type jQuery
  397.  * @cat Events/Browser
  398.  */
  399. /**
  400.  * Bind a function to the scroll event of each matched element, which will only be executed once.
  401.  * Unlike a call to the normal .scroll() method, calling .onescroll() causes the bound function to be
  402.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  403.  *
  404.  * @example $("p").onescroll( function() { alert("Hello"); } );
  405.  * @before <p onscroll="alert('Hello');">Hello</p>
  406.  * @result alert('Hello'); // Only executed for the first scroll
  407.  *
  408.  * @name onescroll
  409.  * @type jQuery
  410.  * @param Function fn A function to bind to the scroll event on each of the matched elements.
  411.  * @cat Events/Browser
  412.  */
  413. /**
  414.  * Removes a bound scroll event from each of the matched
  415.  * elements. You must pass the identical function that was used in the original 
  416.  * bind method.
  417.  *
  418.  * @example $("p").unscroll( myFunction );
  419.  * @before <p onscroll="myFunction">Hello</p>
  420.  * @result <p>Hello</p>
  421.  *
  422.  * @name unscroll
  423.  * @type jQuery
  424.  * @param Function fn A function to unbind from the scroll event on each of the matched elements.
  425.  * @cat Events/Browser
  426.  */
  427. /**
  428.  * Removes all bound scroll events from each of the matched elements.
  429.  *
  430.  * @example $("p").unscroll();
  431.  * @before <p onscroll="alert('Hello');">Hello</p>
  432.  * @result <p>Hello</p>
  433.  *
  434.  * @name unscroll
  435.  * @type jQuery
  436.  * @cat Events/Browser
  437.  */
  438. /**
  439.  * Bind a function to the submit event of each matched element.
  440.  *
  441.  * @example $("p").submit( function() { alert("Hello"); } );
  442.  * @before <p>Hello</p>
  443.  * @result <p onsubmit="alert('Hello');">Hello</p>
  444.  *
  445.  * @name submit
  446.  * @type jQuery
  447.  * @param Function fn A function to bind to the submit event on each of the matched elements.
  448.  * @cat Events/Form
  449.  */
  450. /**
  451.  * Trigger the submit event of each matched element. This causes all of the functions
  452.  * that have been bound to thet submit event to be executed.
  453.  *
  454.  * @example $("p").submit();
  455.  * @before <p onsubmit="alert('Hello');">Hello</p>
  456.  * @result alert('Hello');
  457.  *
  458.  * @name submit
  459.  * @type jQuery
  460.  * @cat Events/Form
  461.  */
  462. /**
  463.  * Bind a function to the submit event of each matched element, which will only be executed once.
  464.  * Unlike a call to the normal .submit() method, calling .onesubmit() causes the bound function to be
  465.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  466.  *
  467.  * @example $("p").onesubmit( function() { alert("Hello"); } );
  468.  * @before <p onsubmit="alert('Hello');">Hello</p>
  469.  * @result alert('Hello'); // Only executed for the first submit
  470.  *
  471.  * @name onesubmit
  472.  * @type jQuery
  473.  * @param Function fn A function to bind to the submit event on each of the matched elements.
  474.  * @cat Events/Form
  475.  */
  476. /**
  477.  * Removes a bound submit event from each of the matched
  478.  * elements. You must pass the identical function that was used in the original 
  479.  * bind method.
  480.  *
  481.  * @example $("p").unsubmit( myFunction );
  482.  * @before <p onsubmit="myFunction">Hello</p>
  483.  * @result <p>Hello</p>
  484.  *
  485.  * @name unsubmit
  486.  * @type jQuery
  487.  * @param Function fn A function to unbind from the submit event on each of the matched elements.
  488.  * @cat Events/Form
  489.  */
  490. /**
  491.  * Removes all bound submit events from each of the matched elements.
  492.  *
  493.  * @example $("p").unsubmit();
  494.  * @before <p onsubmit="alert('Hello');">Hello</p>
  495.  * @result <p>Hello</p>
  496.  *
  497.  * @name unsubmit
  498.  * @type jQuery
  499.  * @cat Events/Form
  500.  */
  501. /**
  502.  * Bind a function to the focus event of each matched element.
  503.  *
  504.  * @example $("p").focus( function() { alert("Hello"); } );
  505.  * @before <p>Hello</p>
  506.  * @result <p onfocus="alert('Hello');">Hello</p>
  507.  *
  508.  * @name focus
  509.  * @type jQuery
  510.  * @param Function fn A function to bind to the focus event on each of the matched elements.
  511.  * @cat Events/UI
  512.  */
  513. /**
  514.  * Trigger the focus event of each matched element. This causes all of the functions
  515.  * that have been bound to thet focus event to be executed.
  516.  *
  517.  * @example $("p").focus();
  518.  * @before <p onfocus="alert('Hello');">Hello</p>
  519.  * @result alert('Hello');
  520.  *
  521.  * @name focus
  522.  * @type jQuery
  523.  * @cat Events/UI
  524.  */
  525. /**
  526.  * Bind a function to the focus event of each matched element, which will only be executed once.
  527.  * Unlike a call to the normal .focus() method, calling .onefocus() causes the bound function to be
  528.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  529.  *
  530.  * @example $("p").onefocus( function() { alert("Hello"); } );
  531.  * @before <p onfocus="alert('Hello');">Hello</p>
  532.  * @result alert('Hello'); // Only executed for the first focus
  533.  *
  534.  * @name onefocus
  535.  * @type jQuery
  536.  * @param Function fn A function to bind to the focus event on each of the matched elements.
  537.  * @cat Events/UI
  538.  */
  539. /**
  540.  * Removes a bound focus event from each of the matched
  541.  * elements. You must pass the identical function that was used in the original 
  542.  * bind method.
  543.  *
  544.  * @example $("p").unfocus( myFunction );
  545.  * @before <p onfocus="myFunction">Hello</p>
  546.  * @result <p>Hello</p>
  547.  *
  548.  * @name unfocus
  549.  * @type jQuery
  550.  * @param Function fn A function to unbind from the focus event on each of the matched elements.
  551.  * @cat Events/UI
  552.  */
  553. /**
  554.  * Removes all bound focus events from each of the matched elements.
  555.  *
  556.  * @example $("p").unfocus();
  557.  * @before <p onfocus="alert('Hello');">Hello</p>
  558.  * @result <p>Hello</p>
  559.  *
  560.  * @name unfocus
  561.  * @type jQuery
  562.  * @cat Events/UI
  563.  */
  564. /**
  565.  * Bind a function to the keydown event of each matched element.
  566.  *
  567.  * @example $("p").keydown( function() { alert("Hello"); } );
  568.  * @before <p>Hello</p>
  569.  * @result <p onkeydown="alert('Hello');">Hello</p>
  570.  *
  571.  * @name keydown
  572.  * @type jQuery
  573.  * @param Function fn A function to bind to the keydown event on each of the matched elements.
  574.  * @cat Events/Keyboard
  575.  */
  576. /**
  577.  * Trigger the keydown event of each matched element. This causes all of the functions
  578.  * that have been bound to thet keydown event to be executed.
  579.  *
  580.  * @example $("p").keydown();
  581.  * @before <p onkeydown="alert('Hello');">Hello</p>
  582.  * @result alert('Hello');
  583.  *
  584.  * @name keydown
  585.  * @type jQuery
  586.  * @cat Events/Keyboard
  587.  */
  588. /**
  589.  * Bind a function to the keydown event of each matched element, which will only be executed once.
  590.  * Unlike a call to the normal .keydown() method, calling .onekeydown() causes the bound function to be
  591.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  592.  *
  593.  * @example $("p").onekeydown( function() { alert("Hello"); } );
  594.  * @before <p onkeydown="alert('Hello');">Hello</p>
  595.  * @result alert('Hello'); // Only executed for the first keydown
  596.  *
  597.  * @name onekeydown
  598.  * @type jQuery
  599.  * @param Function fn A function to bind to the keydown event on each of the matched elements.
  600.  * @cat Events/Keyboard
  601.  */
  602. /**
  603.  * Removes a bound keydown event from each of the matched
  604.  * elements. You must pass the identical function that was used in the original 
  605.  * bind method.
  606.  *
  607.  * @example $("p").unkeydown( myFunction );
  608.  * @before <p onkeydown="myFunction">Hello</p>
  609.  * @result <p>Hello</p>
  610.  *
  611.  * @name unkeydown
  612.  * @type jQuery
  613.  * @param Function fn A function to unbind from the keydown event on each of the matched elements.
  614.  * @cat Events/Keyboard
  615.  */
  616. /**
  617.  * Removes all bound keydown events from each of the matched elements.
  618.  *
  619.  * @example $("p").unkeydown();
  620.  * @before <p onkeydown="alert('Hello');">Hello</p>
  621.  * @result <p>Hello</p>
  622.  *
  623.  * @name unkeydown
  624.  * @type jQuery
  625.  * @cat Events/Keyboard
  626.  */
  627. /**
  628.  * Bind a function to the dblclick event of each matched element.
  629.  *
  630.  * @example $("p").dblclick( function() { alert("Hello"); } );
  631.  * @before <p>Hello</p>
  632.  * @result <p ondblclick="alert('Hello');">Hello</p>
  633.  *
  634.  * @name dblclick
  635.  * @type jQuery
  636.  * @param Function fn A function to bind to the dblclick event on each of the matched elements.
  637.  * @cat Events/Mouse
  638.  */
  639. /**
  640.  * Trigger the dblclick event of each matched element. This causes all of the functions
  641.  * that have been bound to thet dblclick event to be executed.
  642.  *
  643.  * @example $("p").dblclick();
  644.  * @before <p ondblclick="alert('Hello');">Hello</p>
  645.  * @result alert('Hello');
  646.  *
  647.  * @name dblclick
  648.  * @type jQuery
  649.  * @cat Events/Mouse
  650.  */
  651. /**
  652.  * Bind a function to the dblclick event of each matched element, which will only be executed once.
  653.  * Unlike a call to the normal .dblclick() method, calling .onedblclick() causes the bound function to be
  654.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  655.  *
  656.  * @example $("p").onedblclick( function() { alert("Hello"); } );
  657.  * @before <p ondblclick="alert('Hello');">Hello</p>
  658.  * @result alert('Hello'); // Only executed for the first dblclick
  659.  *
  660.  * @name onedblclick
  661.  * @type jQuery
  662.  * @param Function fn A function to bind to the dblclick event on each of the matched elements.
  663.  * @cat Events/Mouse
  664.  */
  665. /**
  666.  * Removes a bound dblclick event from each of the matched
  667.  * elements. You must pass the identical function that was used in the original 
  668.  * bind method.
  669.  *
  670.  * @example $("p").undblclick( myFunction );
  671.  * @before <p ondblclick="myFunction">Hello</p>
  672.  * @result <p>Hello</p>
  673.  *
  674.  * @name undblclick
  675.  * @type jQuery
  676.  * @param Function fn A function to unbind from the dblclick event on each of the matched elements.
  677.  * @cat Events/Mouse
  678.  */
  679. /**
  680.  * Removes all bound dblclick events from each of the matched elements.
  681.  *
  682.  * @example $("p").undblclick();
  683.  * @before <p ondblclick="alert('Hello');">Hello</p>
  684.  * @result <p>Hello</p>
  685.  *
  686.  * @name undblclick
  687.  * @type jQuery
  688.  * @cat Events/Mouse
  689.  */
  690. /**
  691.  * Bind a function to the keypress event of each matched element.
  692.  *
  693.  * @example $("p").keypress( function() { alert("Hello"); } );
  694.  * @before <p>Hello</p>
  695.  * @result <p onkeypress="alert('Hello');">Hello</p>
  696.  *
  697.  * @name keypress
  698.  * @type jQuery
  699.  * @param Function fn A function to bind to the keypress event on each of the matched elements.
  700.  * @cat Events/Keyboard
  701.  */
  702. /**
  703.  * Trigger the keypress event of each matched element. This causes all of the functions
  704.  * that have been bound to thet keypress event to be executed.
  705.  *
  706.  * @example $("p").keypress();
  707.  * @before <p onkeypress="alert('Hello');">Hello</p>
  708.  * @result alert('Hello');
  709.  *
  710.  * @name keypress
  711.  * @type jQuery
  712.  * @cat Events/Keyboard
  713.  */
  714. /**
  715.  * Bind a function to the keypress event of each matched element, which will only be executed once.
  716.  * Unlike a call to the normal .keypress() method, calling .onekeypress() causes the bound function to be
  717.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  718.  *
  719.  * @example $("p").onekeypress( function() { alert("Hello"); } );
  720.  * @before <p onkeypress="alert('Hello');">Hello</p>
  721.  * @result alert('Hello'); // Only executed for the first keypress
  722.  *
  723.  * @name onekeypress
  724.  * @type jQuery
  725.  * @param Function fn A function to bind to the keypress event on each of the matched elements.
  726.  * @cat Events/Keyboard
  727.  */
  728. /**
  729.  * Removes a bound keypress event from each of the matched
  730.  * elements. You must pass the identical function that was used in the original 
  731.  * bind method.
  732.  *
  733.  * @example $("p").unkeypress( myFunction );
  734.  * @before <p onkeypress="myFunction">Hello</p>
  735.  * @result <p>Hello</p>
  736.  *
  737.  * @name unkeypress
  738.  * @type jQuery
  739.  * @param Function fn A function to unbind from the keypress event on each of the matched elements.
  740.  * @cat Events/Keyboard
  741.  */
  742. /**
  743.  * Removes all bound keypress events from each of the matched elements.
  744.  *
  745.  * @example $("p").unkeypress();
  746.  * @before <p onkeypress="alert('Hello');">Hello</p>
  747.  * @result <p>Hello</p>
  748.  *
  749.  * @name unkeypress
  750.  * @type jQuery
  751.  * @cat Events/Keyboard
  752.  */
  753. /**
  754.  * Bind a function to the error event of each matched element.
  755.  *
  756.  * @example $("p").error( function() { alert("Hello"); } );
  757.  * @before <p>Hello</p>
  758.  * @result <p onerror="alert('Hello');">Hello</p>
  759.  *
  760.  * @name error
  761.  * @type jQuery
  762.  * @param Function fn A function to bind to the error event on each of the matched elements.
  763.  * @cat Events/Browser
  764.  */
  765. /**
  766.  * Trigger the error event of each matched element. This causes all of the functions
  767.  * that have been bound to thet error event to be executed.
  768.  *
  769.  * @example $("p").error();
  770.  * @before <p onerror="alert('Hello');">Hello</p>
  771.  * @result alert('Hello');
  772.  *
  773.  * @name error
  774.  * @type jQuery
  775.  * @cat Events/Browser
  776.  */
  777. /**
  778.  * Bind a function to the error event of each matched element, which will only be executed once.
  779.  * Unlike a call to the normal .error() method, calling .oneerror() causes the bound function to be
  780.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  781.  *
  782.  * @example $("p").oneerror( function() { alert("Hello"); } );
  783.  * @before <p onerror="alert('Hello');">Hello</p>
  784.  * @result alert('Hello'); // Only executed for the first error
  785.  *
  786.  * @name oneerror
  787.  * @type jQuery
  788.  * @param Function fn A function to bind to the error event on each of the matched elements.
  789.  * @cat Events/Browser
  790.  */
  791. /**
  792.  * Removes a bound error event from each of the matched
  793.  * elements. You must pass the identical function that was used in the original 
  794.  * bind method.
  795.  *
  796.  * @example $("p").unerror( myFunction );
  797.  * @before <p onerror="myFunction">Hello</p>
  798.  * @result <p>Hello</p>
  799.  *
  800.  * @name unerror
  801.  * @type jQuery
  802.  * @param Function fn A function to unbind from the error event on each of the matched elements.
  803.  * @cat Events/Browser
  804.  */
  805. /**
  806.  * Removes all bound error events from each of the matched elements.
  807.  *
  808.  * @example $("p").unerror();
  809.  * @before <p onerror="alert('Hello');">Hello</p>
  810.  * @result <p>Hello</p>
  811.  *
  812.  * @name unerror
  813.  * @type jQuery
  814.  * @cat Events/Browser
  815.  */
  816. /**
  817.  * Bind a function to the blur event of each matched element.
  818.  *
  819.  * @example $("p").blur( function() { alert("Hello"); } );
  820.  * @before <p>Hello</p>
  821.  * @result <p onblur="alert('Hello');">Hello</p>
  822.  *
  823.  * @name blur
  824.  * @type jQuery
  825.  * @param Function fn A function to bind to the blur event on each of the matched elements.
  826.  * @cat Events/UI
  827.  */
  828. /**
  829.  * Trigger the blur event of each matched element. This causes all of the functions
  830.  * that have been bound to thet blur event to be executed.
  831.  *
  832.  * @example $("p").blur();
  833.  * @before <p onblur="alert('Hello');">Hello</p>
  834.  * @result alert('Hello');
  835.  *
  836.  * @name blur
  837.  * @type jQuery
  838.  * @cat Events/UI
  839.  */
  840. /**
  841.  * Bind a function to the blur event of each matched element, which will only be executed once.
  842.  * Unlike a call to the normal .blur() method, calling .oneblur() causes the bound function to be
  843.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  844.  *
  845.  * @example $("p").oneblur( function() { alert("Hello"); } );
  846.  * @before <p onblur="alert('Hello');">Hello</p>
  847.  * @result alert('Hello'); // Only executed for the first blur
  848.  *
  849.  * @name oneblur
  850.  * @type jQuery
  851.  * @param Function fn A function to bind to the blur event on each of the matched elements.
  852.  * @cat Events/UI
  853.  */
  854. /**
  855.  * Removes a bound blur event from each of the matched
  856.  * elements. You must pass the identical function that was used in the original 
  857.  * bind method.
  858.  *
  859.  * @example $("p").unblur( myFunction );
  860.  * @before <p onblur="myFunction">Hello</p>
  861.  * @result <p>Hello</p>
  862.  *
  863.  * @name unblur
  864.  * @type jQuery
  865.  * @param Function fn A function to unbind from the blur event on each of the matched elements.
  866.  * @cat Events/UI
  867.  */
  868. /**
  869.  * Removes all bound blur events from each of the matched elements.
  870.  *
  871.  * @example $("p").unblur();
  872.  * @before <p onblur="alert('Hello');">Hello</p>
  873.  * @result <p>Hello</p>
  874.  *
  875.  * @name unblur
  876.  * @type jQuery
  877.  * @cat Events/UI
  878.  */
  879. /**
  880.  * Bind a function to the load event of each matched element.
  881.  *
  882.  * @example $("p").load( function() { alert("Hello"); } );
  883.  * @before <p>Hello</p>
  884.  * @result <p onload="alert('Hello');">Hello</p>
  885.  *
  886.  * @name load
  887.  * @type jQuery
  888.  * @param Function fn A function to bind to the load event on each of the matched elements.
  889.  * @cat Events/Browser
  890.  */
  891. /**
  892.  * Trigger the load event of each matched element. This causes all of the functions
  893.  * that have been bound to thet load event to be executed.
  894.  *
  895.  * @example $("p").load();
  896.  * @before <p onload="alert('Hello');">Hello</p>
  897.  * @result alert('Hello');
  898.  *
  899.  * @name load
  900.  * @type jQuery
  901.  * @cat Events/Browser
  902.  */
  903. /**
  904.  * Bind a function to the load event of each matched element, which will only be executed once.
  905.  * Unlike a call to the normal .load() method, calling .oneload() causes the bound function to be
  906.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  907.  *
  908.  * @example $("p").oneload( function() { alert("Hello"); } );
  909.  * @before <p onload="alert('Hello');">Hello</p>
  910.  * @result alert('Hello'); // Only executed for the first load
  911.  *
  912.  * @name oneload
  913.  * @type jQuery
  914.  * @param Function fn A function to bind to the load event on each of the matched elements.
  915.  * @cat Events/Browser
  916.  */
  917. /**
  918.  * Removes a bound load event from each of the matched
  919.  * elements. You must pass the identical function that was used in the original 
  920.  * bind method.
  921.  *
  922.  * @example $("p").unload( myFunction );
  923.  * @before <p onload="myFunction">Hello</p>
  924.  * @result <p>Hello</p>
  925.  *
  926.  * @name unload
  927.  * @type jQuery
  928.  * @param Function fn A function to unbind from the load event on each of the matched elements.
  929.  * @cat Events/Browser
  930.  */
  931. /**
  932.  * Removes all bound load events from each of the matched elements.
  933.  *
  934.  * @example $("p").unload();
  935.  * @before <p onload="alert('Hello');">Hello</p>
  936.  * @result <p>Hello</p>
  937.  *
  938.  * @name unload
  939.  * @type jQuery
  940.  * @cat Events/Browser
  941.  */
  942. /**
  943.  * Bind a function to the select event of each matched element.
  944.  *
  945.  * @example $("p").select( function() { alert("Hello"); } );
  946.  * @before <p>Hello</p>
  947.  * @result <p onselect="alert('Hello');">Hello</p>
  948.  *
  949.  * @name select
  950.  * @type jQuery
  951.  * @param Function fn A function to bind to the select event on each of the matched elements.
  952.  * @cat Events/Form
  953.  */
  954. /**
  955.  * Trigger the select event of each matched element. This causes all of the functions
  956.  * that have been bound to thet select event to be executed.
  957.  *
  958.  * @example $("p").select();
  959.  * @before <p onselect="alert('Hello');">Hello</p>
  960.  * @result alert('Hello');
  961.  *
  962.  * @name select
  963.  * @type jQuery
  964.  * @cat Events/Form
  965.  */
  966. /**
  967.  * Bind a function to the select event of each matched element, which will only be executed once.
  968.  * Unlike a call to the normal .select() method, calling .oneselect() causes the bound function to be
  969.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  970.  *
  971.  * @example $("p").oneselect( function() { alert("Hello"); } );
  972.  * @before <p onselect="alert('Hello');">Hello</p>
  973.  * @result alert('Hello'); // Only executed for the first select
  974.  *
  975.  * @name oneselect
  976.  * @type jQuery
  977.  * @param Function fn A function to bind to the select event on each of the matched elements.
  978.  * @cat Events/Form
  979.  */
  980. /**
  981.  * Removes a bound select event from each of the matched
  982.  * elements. You must pass the identical function that was used in the original 
  983.  * bind method.
  984.  *
  985.  * @example $("p").unselect( myFunction );
  986.  * @before <p onselect="myFunction">Hello</p>
  987.  * @result <p>Hello</p>
  988.  *
  989.  * @name unselect
  990.  * @type jQuery
  991.  * @param Function fn A function to unbind from the select event on each of the matched elements.
  992.  * @cat Events/Form
  993.  */
  994. /**
  995.  * Removes all bound select events from each of the matched elements.
  996.  *
  997.  * @example $("p").unselect();
  998.  * @before <p onselect="alert('Hello');">Hello</p>
  999.  * @result <p>Hello</p>
  1000.  *
  1001.  * @name unselect
  1002.  * @type jQuery
  1003.  * @cat Events/Form
  1004.  */
  1005. /**
  1006.  * Bind a function to the mouseup event of each matched element.
  1007.  *
  1008.  * @example $("p").mouseup( function() { alert("Hello"); } );
  1009.  * @before <p>Hello</p>
  1010.  * @result <p onmouseup="alert('Hello');">Hello</p>
  1011.  *
  1012.  * @name mouseup
  1013.  * @type jQuery
  1014.  * @param Function fn A function to bind to the mouseup event on each of the matched elements.
  1015.  * @cat Events/Mouse
  1016.  */
  1017. /**
  1018.  * Trigger the mouseup event of each matched element. This causes all of the functions
  1019.  * that have been bound to thet mouseup event to be executed.
  1020.  *
  1021.  * @example $("p").mouseup();
  1022.  * @before <p onmouseup="alert('Hello');">Hello</p>
  1023.  * @result alert('Hello');
  1024.  *
  1025.  * @name mouseup
  1026.  * @type jQuery
  1027.  * @cat Events/Mouse
  1028.  */
  1029. /**
  1030.  * Bind a function to the mouseup event of each matched element, which will only be executed once.
  1031.  * Unlike a call to the normal .mouseup() method, calling .onemouseup() causes the bound function to be
  1032.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  1033.  *
  1034.  * @example $("p").onemouseup( function() { alert("Hello"); } );
  1035.  * @before <p onmouseup="alert('Hello');">Hello</p>
  1036.  * @result alert('Hello'); // Only executed for the first mouseup
  1037.  *
  1038.  * @name onemouseup
  1039.  * @type jQuery
  1040.  * @param Function fn A function to bind to the mouseup event on each of the matched elements.
  1041.  * @cat Events/Mouse
  1042.  */
  1043. /**
  1044.  * Removes a bound mouseup event from each of the matched
  1045.  * elements. You must pass the identical function that was used in the original 
  1046.  * bind method.
  1047.  *
  1048.  * @example $("p").unmouseup( myFunction );
  1049.  * @before <p onmouseup="myFunction">Hello</p>
  1050.  * @result <p>Hello</p>
  1051.  *
  1052.  * @name unmouseup
  1053.  * @type jQuery
  1054.  * @param Function fn A function to unbind from the mouseup event on each of the matched elements.
  1055.  * @cat Events/Mouse
  1056.  */
  1057. /**
  1058.  * Removes all bound mouseup events from each of the matched elements.
  1059.  *
  1060.  * @example $("p").unmouseup();
  1061.  * @before <p onmouseup="alert('Hello');">Hello</p>
  1062.  * @result <p>Hello</p>
  1063.  *
  1064.  * @name unmouseup
  1065.  * @type jQuery
  1066.  * @cat Events/Mouse
  1067.  */
  1068. /**
  1069.  * Bind a function to the unload event of each matched element.
  1070.  *
  1071.  * @example $("p").unload( function() { alert("Hello"); } );
  1072.  * @before <p>Hello</p>
  1073.  * @result <p onunload="alert('Hello');">Hello</p>
  1074.  *
  1075.  * @name unload
  1076.  * @type jQuery
  1077.  * @param Function fn A function to bind to the unload event on each of the matched elements.
  1078.  * @cat Events/Browser
  1079.  */
  1080. /**
  1081.  * Trigger the unload event of each matched element. This causes all of the functions
  1082.  * that have been bound to thet unload event to be executed.
  1083.  *
  1084.  * @example $("p").unload();
  1085.  * @before <p onunload="alert('Hello');">Hello</p>
  1086.  * @result alert('Hello');
  1087.  *
  1088.  * @name unload
  1089.  * @type jQuery
  1090.  * @cat Events/Browser
  1091.  */
  1092. /**
  1093.  * Bind a function to the unload event of each matched element, which will only be executed once.
  1094.  * Unlike a call to the normal .unload() method, calling .oneunload() causes the bound function to be
  1095.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  1096.  *
  1097.  * @example $("p").oneunload( function() { alert("Hello"); } );
  1098.  * @before <p onunload="alert('Hello');">Hello</p>
  1099.  * @result alert('Hello'); // Only executed for the first unload
  1100.  *
  1101.  * @name oneunload
  1102.  * @type jQuery
  1103.  * @param Function fn A function to bind to the unload event on each of the matched elements.
  1104.  * @cat Events/Browser
  1105.  */
  1106. /**
  1107.  * Removes a bound unload event from each of the matched
  1108.  * elements. You must pass the identical function that was used in the original 
  1109.  * bind method.
  1110.  *
  1111.  * @example $("p").ununload( myFunction );
  1112.  * @before <p onunload="myFunction">Hello</p>
  1113.  * @result <p>Hello</p>
  1114.  *
  1115.  * @name ununload
  1116.  * @type jQuery
  1117.  * @param Function fn A function to unbind from the unload event on each of the matched elements.
  1118.  * @cat Events/Browser
  1119.  */
  1120. /**
  1121.  * Removes all bound unload events from each of the matched elements.
  1122.  *
  1123.  * @example $("p").ununload();
  1124.  * @before <p onunload="alert('Hello');">Hello</p>
  1125.  * @result <p>Hello</p>
  1126.  *
  1127.  * @name ununload
  1128.  * @type jQuery
  1129.  * @cat Events/Browser
  1130.  */
  1131. /**
  1132.  * Bind a function to the change event of each matched element.
  1133.  *
  1134.  * @example $("p").change( function() { alert("Hello"); } );
  1135.  * @before <p>Hello</p>
  1136.  * @result <p onchange="alert('Hello');">Hello</p>
  1137.  *
  1138.  * @name change
  1139.  * @type jQuery
  1140.  * @param Function fn A function to bind to the change event on each of the matched elements.
  1141.  * @cat Events/Form
  1142.  */
  1143. /**
  1144.  * Trigger the change event of each matched element. This causes all of the functions
  1145.  * that have been bound to thet change event to be executed.
  1146.  *
  1147.  * @example $("p").change();
  1148.  * @before <p onchange="alert('Hello');">Hello</p>
  1149.  * @result alert('Hello');
  1150.  *
  1151.  * @name change
  1152.  * @type jQuery
  1153.  * @cat Events/Form
  1154.  */
  1155. /**
  1156.  * Bind a function to the change event of each matched element, which will only be executed once.
  1157.  * Unlike a call to the normal .change() method, calling .onechange() causes the bound function to be
  1158.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  1159.  *
  1160.  * @example $("p").onechange( function() { alert("Hello"); } );
  1161.  * @before <p onchange="alert('Hello');">Hello</p>
  1162.  * @result alert('Hello'); // Only executed for the first change
  1163.  *
  1164.  * @name onechange
  1165.  * @type jQuery
  1166.  * @param Function fn A function to bind to the change event on each of the matched elements.
  1167.  * @cat Events/Form
  1168.  */
  1169. /**
  1170.  * Removes a bound change event from each of the matched
  1171.  * elements. You must pass the identical function that was used in the original 
  1172.  * bind method.
  1173.  *
  1174.  * @example $("p").unchange( myFunction );
  1175.  * @before <p onchange="myFunction">Hello</p>
  1176.  * @result <p>Hello</p>
  1177.  *
  1178.  * @name unchange
  1179.  * @type jQuery
  1180.  * @param Function fn A function to unbind from the change event on each of the matched elements.
  1181.  * @cat Events/Form
  1182.  */
  1183. /**
  1184.  * Removes all bound change events from each of the matched elements.
  1185.  *
  1186.  * @example $("p").unchange();
  1187.  * @before <p onchange="alert('Hello');">Hello</p>
  1188.  * @result <p>Hello</p>
  1189.  *
  1190.  * @name unchange
  1191.  * @type jQuery
  1192.  * @cat Events/Form
  1193.  */
  1194. /**
  1195.  * Bind a function to the mouseout event of each matched element.
  1196.  *
  1197.  * @example $("p").mouseout( function() { alert("Hello"); } );
  1198.  * @before <p>Hello</p>
  1199.  * @result <p onmouseout="alert('Hello');">Hello</p>
  1200.  *
  1201.  * @name mouseout
  1202.  * @type jQuery
  1203.  * @param Function fn A function to bind to the mouseout event on each of the matched elements.
  1204.  * @cat Events/Mouse
  1205.  */
  1206. /**
  1207.  * Trigger the mouseout event of each matched element. This causes all of the functions
  1208.  * that have been bound to thet mouseout event to be executed.
  1209.  *
  1210.  * @example $("p").mouseout();
  1211.  * @before <p onmouseout="alert('Hello');">Hello</p>
  1212.  * @result alert('Hello');
  1213.  *
  1214.  * @name mouseout
  1215.  * @type jQuery
  1216.  * @cat Events/Mouse
  1217.  */
  1218. /**
  1219.  * Bind a function to the mouseout event of each matched element, which will only be executed once.
  1220.  * Unlike a call to the normal .mouseout() method, calling .onemouseout() causes the bound function to be
  1221.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  1222.  *
  1223.  * @example $("p").onemouseout( function() { alert("Hello"); } );
  1224.  * @before <p onmouseout="alert('Hello');">Hello</p>
  1225.  * @result alert('Hello'); // Only executed for the first mouseout
  1226.  *
  1227.  * @name onemouseout
  1228.  * @type jQuery
  1229.  * @param Function fn A function to bind to the mouseout event on each of the matched elements.
  1230.  * @cat Events/Mouse
  1231.  */
  1232. /**
  1233.  * Removes a bound mouseout event from each of the matched
  1234.  * elements. You must pass the identical function that was used in the original 
  1235.  * bind method.
  1236.  *
  1237.  * @example $("p").unmouseout( myFunction );
  1238.  * @before <p onmouseout="myFunction">Hello</p>
  1239.  * @result <p>Hello</p>
  1240.  *
  1241.  * @name unmouseout
  1242.  * @type jQuery
  1243.  * @param Function fn A function to unbind from the mouseout event on each of the matched elements.
  1244.  * @cat Events/Mouse
  1245.  */
  1246. /**
  1247.  * Removes all bound mouseout events from each of the matched elements.
  1248.  *
  1249.  * @example $("p").unmouseout();
  1250.  * @before <p onmouseout="alert('Hello');">Hello</p>
  1251.  * @result <p>Hello</p>
  1252.  *
  1253.  * @name unmouseout
  1254.  * @type jQuery
  1255.  * @cat Events/Mouse
  1256.  */
  1257. /**
  1258.  * Bind a function to the keyup event of each matched element.
  1259.  *
  1260.  * @example $("p").keyup( function() { alert("Hello"); } );
  1261.  * @before <p>Hello</p>
  1262.  * @result <p onkeyup="alert('Hello');">Hello</p>
  1263.  *
  1264.  * @name keyup
  1265.  * @type jQuery
  1266.  * @param Function fn A function to bind to the keyup event on each of the matched elements.
  1267.  * @cat Events/Keyboard
  1268.  */
  1269. /**
  1270.  * Trigger the keyup event of each matched element. This causes all of the functions
  1271.  * that have been bound to thet keyup event to be executed.
  1272.  *
  1273.  * @example $("p").keyup();
  1274.  * @before <p onkeyup="alert('Hello');">Hello</p>
  1275.  * @result alert('Hello');
  1276.  *
  1277.  * @name keyup
  1278.  * @type jQuery
  1279.  * @cat Events/Keyboard
  1280.  */
  1281. /**
  1282.  * Bind a function to the keyup event of each matched element, which will only be executed once.
  1283.  * Unlike a call to the normal .keyup() method, calling .onekeyup() causes the bound function to be
  1284.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  1285.  *
  1286.  * @example $("p").onekeyup( function() { alert("Hello"); } );
  1287.  * @before <p onkeyup="alert('Hello');">Hello</p>
  1288.  * @result alert('Hello'); // Only executed for the first keyup
  1289.  *
  1290.  * @name onekeyup
  1291.  * @type jQuery
  1292.  * @param Function fn A function to bind to the keyup event on each of the matched elements.
  1293.  * @cat Events/Keyboard
  1294.  */
  1295. /**
  1296.  * Removes a bound keyup event from each of the matched
  1297.  * elements. You must pass the identical function that was used in the original 
  1298.  * bind method.
  1299.  *
  1300.  * @example $("p").unkeyup( myFunction );
  1301.  * @before <p onkeyup="myFunction">Hello</p>
  1302.  * @result <p>Hello</p>
  1303.  *
  1304.  * @name unkeyup
  1305.  * @type jQuery
  1306.  * @param Function fn A function to unbind from the keyup event on each of the matched elements.
  1307.  * @cat Events/Keyboard
  1308.  */
  1309. /**
  1310.  * Removes all bound keyup events from each of the matched elements.
  1311.  *
  1312.  * @example $("p").unkeyup();
  1313.  * @before <p onkeyup="alert('Hello');">Hello</p>
  1314.  * @result <p>Hello</p>
  1315.  *
  1316.  * @name unkeyup
  1317.  * @type jQuery
  1318.  * @cat Events/Keyboard
  1319.  */
  1320. /**
  1321.  * Bind a function to the click event of each matched element.
  1322.  *
  1323.  * @example $("p").click( function() { alert("Hello"); } );
  1324.  * @before <p>Hello</p>
  1325.  * @result <p onclick="alert('Hello');">Hello</p>
  1326.  *
  1327.  * @name click
  1328.  * @type jQuery
  1329.  * @param Function fn A function to bind to the click event on each of the matched elements.
  1330.  * @cat Events/Mouse
  1331.  */
  1332. /**
  1333.  * Trigger the click event of each matched element. This causes all of the functions
  1334.  * that have been bound to thet click event to be executed.
  1335.  *
  1336.  * @example $("p").click();
  1337.  * @before <p onclick="alert('Hello');">Hello</p>
  1338.  * @result alert('Hello');
  1339.  *
  1340.  * @name click
  1341.  * @type jQuery
  1342.  * @cat Events/Mouse
  1343.  */
  1344. /**
  1345.  * Bind a function to the click event of each matched element, which will only be executed once.
  1346.  * Unlike a call to the normal .click() method, calling .oneclick() causes the bound function to be
  1347.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  1348.  *
  1349.  * @example $("p").oneclick( function() { alert("Hello"); } );
  1350.  * @before <p onclick="alert('Hello');">Hello</p>
  1351.  * @result alert('Hello'); // Only executed for the first click
  1352.  *
  1353.  * @name oneclick
  1354.  * @type jQuery
  1355.  * @param Function fn A function to bind to the click event on each of the matched elements.
  1356.  * @cat Events/Mouse
  1357.  */
  1358. /**
  1359.  * Removes a bound click event from each of the matched
  1360.  * elements. You must pass the identical function that was used in the original 
  1361.  * bind method.
  1362.  *
  1363.  * @example $("p").unclick( myFunction );
  1364.  * @before <p onclick="myFunction">Hello</p>
  1365.  * @result <p>Hello</p>
  1366.  *
  1367.  * @name unclick
  1368.  * @type jQuery
  1369.  * @param Function fn A function to unbind from the click event on each of the matched elements.
  1370.  * @cat Events/Mouse
  1371.  */
  1372. /**
  1373.  * Removes all bound click events from each of the matched elements.
  1374.  *
  1375.  * @example $("p").unclick();
  1376.  * @before <p onclick="alert('Hello');">Hello</p>
  1377.  * @result <p>Hello</p>
  1378.  *
  1379.  * @name unclick
  1380.  * @type jQuery
  1381.  * @cat Events/Mouse
  1382.  */
  1383. /**
  1384.  * Bind a function to the resize event of each matched element.
  1385.  *
  1386.  * @example $("p").resize( function() { alert("Hello"); } );
  1387.  * @before <p>Hello</p>
  1388.  * @result <p onresize="alert('Hello');">Hello</p>
  1389.  *
  1390.  * @name resize
  1391.  * @type jQuery
  1392.  * @param Function fn A function to bind to the resize event on each of the matched elements.
  1393.  * @cat Events/Browser
  1394.  */
  1395. /**
  1396.  * Trigger the resize event of each matched element. This causes all of the functions
  1397.  * that have been bound to thet resize event to be executed.
  1398.  *
  1399.  * @example $("p").resize();
  1400.  * @before <p onresize="alert('Hello');">Hello</p>
  1401.  * @result alert('Hello');
  1402.  *
  1403.  * @name resize
  1404.  * @type jQuery
  1405.  * @cat Events/Browser
  1406.  */
  1407. /**
  1408.  * Bind a function to the resize event of each matched element, which will only be executed once.
  1409.  * Unlike a call to the normal .resize() method, calling .oneresize() causes the bound function to be
  1410.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  1411.  *
  1412.  * @example $("p").oneresize( function() { alert("Hello"); } );
  1413.  * @before <p onresize="alert('Hello');">Hello</p>
  1414.  * @result alert('Hello'); // Only executed for the first resize
  1415.  *
  1416.  * @name oneresize
  1417.  * @type jQuery
  1418.  * @param Function fn A function to bind to the resize event on each of the matched elements.
  1419.  * @cat Events/Browser
  1420.  */
  1421. /**
  1422.  * Removes a bound resize event from each of the matched
  1423.  * elements. You must pass the identical function that was used in the original 
  1424.  * bind method.
  1425.  *
  1426.  * @example $("p").unresize( myFunction );
  1427.  * @before <p onresize="myFunction">Hello</p>
  1428.  * @result <p>Hello</p>
  1429.  *
  1430.  * @name unresize
  1431.  * @type jQuery
  1432.  * @param Function fn A function to unbind from the resize event on each of the matched elements.
  1433.  * @cat Events/Browser
  1434.  */
  1435. /**
  1436.  * Removes all bound resize events from each of the matched elements.
  1437.  *
  1438.  * @example $("p").unresize();
  1439.  * @before <p onresize="alert('Hello');">Hello</p>
  1440.  * @result <p>Hello</p>
  1441.  *
  1442.  * @name unresize
  1443.  * @type jQuery
  1444.  * @cat Events/Browser
  1445.  */
  1446. /**
  1447.  * Bind a function to the mousemove event of each matched element.
  1448.  *
  1449.  * @example $("p").mousemove( function() { alert("Hello"); } );
  1450.  * @before <p>Hello</p>
  1451.  * @result <p onmousemove="alert('Hello');">Hello</p>
  1452.  *
  1453.  * @name mousemove
  1454.  * @type jQuery
  1455.  * @param Function fn A function to bind to the mousemove event on each of the matched elements.
  1456.  * @cat Events/Mouse
  1457.  */
  1458. /**
  1459.  * Trigger the mousemove event of each matched element. This causes all of the functions
  1460.  * that have been bound to thet mousemove event to be executed.
  1461.  *
  1462.  * @example $("p").mousemove();
  1463.  * @before <p onmousemove="alert('Hello');">Hello</p>
  1464.  * @result alert('Hello');
  1465.  *
  1466.  * @name mousemove
  1467.  * @type jQuery
  1468.  * @cat Events/Mouse
  1469.  */
  1470. /**
  1471.  * Bind a function to the mousemove event of each matched element, which will only be executed once.
  1472.  * Unlike a call to the normal .mousemove() method, calling .onemousemove() causes the bound function to be
  1473.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  1474.  *
  1475.  * @example $("p").onemousemove( function() { alert("Hello"); } );
  1476.  * @before <p onmousemove="alert('Hello');">Hello</p>
  1477.  * @result alert('Hello'); // Only executed for the first mousemove
  1478.  *
  1479.  * @name onemousemove
  1480.  * @type jQuery
  1481.  * @param Function fn A function to bind to the mousemove event on each of the matched elements.
  1482.  * @cat Events/Mouse
  1483.  */
  1484. /**
  1485.  * Removes a bound mousemove event from each of the matched
  1486.  * elements. You must pass the identical function that was used in the original 
  1487.  * bind method.
  1488.  *
  1489.  * @example $("p").unmousemove( myFunction );
  1490.  * @before <p onmousemove="myFunction">Hello</p>
  1491.  * @result <p>Hello</p>
  1492.  *
  1493.  * @name unmousemove
  1494.  * @type jQuery
  1495.  * @param Function fn A function to unbind from the mousemove event on each of the matched elements.
  1496.  * @cat Events/Mouse
  1497.  */
  1498. /**
  1499.  * Removes all bound mousemove events from each of the matched elements.
  1500.  *
  1501.  * @example $("p").unmousemove();
  1502.  * @before <p onmousemove="alert('Hello');">Hello</p>
  1503.  * @result <p>Hello</p>
  1504.  *
  1505.  * @name unmousemove
  1506.  * @type jQuery
  1507.  * @cat Events/Mouse
  1508.  */
  1509. /**
  1510.  * Bind a function to the mousedown event of each matched element.
  1511.  *
  1512.  * @example $("p").mousedown( function() { alert("Hello"); } );
  1513.  * @before <p>Hello</p>
  1514.  * @result <p onmousedown="alert('Hello');">Hello</p>
  1515.  *
  1516.  * @name mousedown
  1517.  * @type jQuery
  1518.  * @param Function fn A function to bind to the mousedown event on each of the matched elements.
  1519.  * @cat Events/Mouse
  1520.  */
  1521. /**
  1522.  * Trigger the mousedown event of each matched element. This causes all of the functions
  1523.  * that have been bound to thet mousedown event to be executed.
  1524.  *
  1525.  * @example $("p").mousedown();
  1526.  * @before <p onmousedown="alert('Hello');">Hello</p>
  1527.  * @result alert('Hello');
  1528.  *
  1529.  * @name mousedown
  1530.  * @type jQuery
  1531.  * @cat Events/Mouse
  1532.  */
  1533. /**
  1534.  * Bind a function to the mousedown event of each matched element, which will only be executed once.
  1535.  * Unlike a call to the normal .mousedown() method, calling .onemousedown() causes the bound function to be
  1536.  * only executed the first time it is triggered, and never again (unless it is re-bound).
  1537.  *
  1538.  * @example $("p").onemousedown( function() { alert("Hello"); } );
  1539.  * @before <p onmousedown="alert('Hello');">Hello</p>
  1540.  * @result alert('Hello'); // Only executed for the first mousedown
  1541.  *
  1542.  * @name onemousedown
  1543.  * @type jQuery
  1544.  * @param Function fn A function to bind to the mousedown event on each of the matched elements.
  1545.  * @cat Events/Mouse
  1546.  */
  1547. /**
  1548.  * Removes a bound mousedown event from each of the matched
  1549.  * elements. You must pass the identical function that was used in the original 
  1550.  * bind method.
  1551.  *
  1552.  * @example $("p").unmousedown( myFunction );
  1553.  * @before <p onmousedown="myFunction">Hello</p>
  1554.  * @result <p>Hello</p>
  1555.  *
  1556.  * @name unmousedown
  1557.  * @type jQuery
  1558.  * @param Function fn A function to unbind from the mousedown event on each of the matched elements.
  1559.  * @cat Events/Mouse
  1560.  */
  1561. /**
  1562.  * Removes all bound mousedown events from each of the matched elements.
  1563.  *
  1564.  * @example $("p").unmousedown();
  1565.  * @before <p onmousedown="alert('Hello');">Hello</p>
  1566.  * @result <p>Hello</p>
  1567.  *
  1568.  * @name unmousedown
  1569.  * @type jQuery
  1570.  * @cat Events/Mouse
  1571.  */
  1572.  
  1573.  /**
  1574.   * @test var count;
  1575.   * var e = ("blur,focus,load,resize,scroll,unload,click,dblclick," +
  1576.   *  "mousedown,mouseup,mousemove,mouseover,mouseout,change,reset,select," + 
  1577.   *  "submit,keydown,keypress,keyup,error").split(",");
  1578.   * var handler1 = function(event) {
  1579.   *  count++;
  1580.   * };
  1581.   * var handler2 = function(event) {
  1582.   *  count++;
  1583.   * };
  1584.   * for( var i=0; i < e.length; i++) {
  1585.   *  var event = e[i];
  1586.   *  count = 0;
  1587.   *  // bind handler
  1588.   *  $(document)[event](handler1);
  1589.   * $(document)[event](handler2);
  1590.   *  $(document)["one"+event](handler1);
  1591.   * 
  1592.   *  // call event two times
  1593.   *  $(document)[event]();
  1594.   *  $(document)[event]();
  1595.   * 
  1596.   *  // unbind events
  1597.   *  $(document)["un"+event](handler1);
  1598.   *  // call once more
  1599.   *  $(document)[event]();
  1600.   *
  1601.   *  // remove all handlers
  1602.   * $(document)["un"+event]();
  1603.   *
  1604.   *  // call once more
  1605.   *  $(document)[event]();
  1606.   * 
  1607.   *  // assert count
  1608.   * @test ok( count == 6, 'Checking event ' + event);
  1609.   * }
  1610.   *
  1611.   * @private
  1612.   * @name eventTesting
  1613.   */
  1614. var e = ("blur,focus,load,resize,scroll,unload,click,dblclick," +
  1615. "mousedown,mouseup,mousemove,mouseover,mouseout,change,reset,select," + 
  1616. "submit,keydown,keypress,keyup,error").split(",");
  1617. // Go through all the event names, but make sure that
  1618. // it is enclosed properly
  1619. for ( var i = 0; i < e.length; i++ ) new function(){
  1620. var o = e[i];
  1621. // Handle event binding
  1622. jQuery.fn[o] = function(f){
  1623. return f ? this.bind(o, f) : this.trigger(o);
  1624. };
  1625. // Handle event unbinding
  1626. jQuery.fn["un"+o] = function(f){ return this.unbind(o, f); };
  1627. // Finally, handle events that only fire once
  1628. jQuery.fn["one"+o] = function(f){
  1629. // Attach the event listener
  1630. return this.each(function(){
  1631. var count = 0;
  1632. // Add the event
  1633. jQuery.event.add( this, o, function(e){
  1634. // If this function has already been executed, stop
  1635. if ( count++ ) return;
  1636. // And execute the bound function
  1637. return f.apply(this, [e]);
  1638. });
  1639. });
  1640. };
  1641. };
  1642. // If Mozilla is used
  1643. if ( jQuery.browser.mozilla || jQuery.browser.opera ) {
  1644. // Use the handy event callback
  1645. document.addEventListener( "DOMContentLoaded", jQuery.ready, false );
  1646. // If IE is used, use the excellent hack by Matthias Miller
  1647. // http://www.outofhanwell.com/blog/index.php?title=the_window_onload_problem_revisited
  1648. } else if ( jQuery.browser.msie ) {
  1649. // Only works if you document.write() it
  1650. document.write("<scr" + "ipt id=__ie_init defer=true " + 
  1651. "src=//:></script>");
  1652. // Use the defer script hack
  1653. var script = document.getElementById("__ie_init");
  1654. script.onreadystatechange = function() {
  1655. if ( this.readyState != "complete" ) return;
  1656. this.parentNode.removeChild( this );
  1657. jQuery.ready();
  1658. };
  1659. // Clear from memory
  1660. script = null;
  1661. // If Safari  is used
  1662. } else if ( jQuery.browser.safari ) {
  1663. // Continually check to see if the document.readyState is valid
  1664. jQuery.safariTimer = setInterval(function(){
  1665. // loaded and complete are both valid states
  1666. if ( document.readyState == "loaded" || 
  1667. document.readyState == "complete" ) {
  1668. // If either one are found, remove the timer
  1669. clearInterval( jQuery.safariTimer );
  1670. jQuery.safariTimer = null;
  1671. // and execute any waiting functions
  1672. jQuery.ready();
  1673. }
  1674. }, 10);
  1675. // A fallback to window.onload, that will always work
  1676. jQuery.event.add( window, "load", jQuery.ready );
  1677. };
  1678. jQuery.fn.extend({
  1679. // overwrite the old show method
  1680. _show: jQuery.fn.show,
  1681. /**
  1682.  * Show all matched elements using a graceful animation.
  1683.  * The height, width, and opacity of each of the matched elements 
  1684.  * are changed dynamically according to the specified speed.
  1685.  *
  1686.  * @example $("p").show("slow");
  1687.  *
  1688.  * @name show
  1689.  * @type jQuery
  1690.  * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
  1691.  * @cat Effects/Animations
  1692.  */
  1693.  
  1694. /**
  1695.  * Show all matched elements using a graceful animation and firing a callback
  1696.  * function after completion.
  1697.  * The height, width, and opacity of each of the matched elements 
  1698.  * are changed dynamically according to the specified speed.
  1699.  *
  1700.  * @example $("p").show("slow",function(){
  1701.  *   alert("Animation Done.");
  1702.  * });
  1703.  *
  1704.  * @name show
  1705.  * @type jQuery
  1706.  * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
  1707.  * @param Function callback A function to be executed whenever the animation completes.
  1708.  * @cat Effects/Animations
  1709.  */
  1710. show: function(speed,callback){
  1711. return speed ? this.animate({
  1712. height: "show", width: "show", opacity: "show"
  1713. }, speed, callback) : this._show();
  1714. },
  1715. // Overwrite the old hide method
  1716. _hide: jQuery.fn.hide,
  1717. /**
  1718.  * Hide all matched elements using a graceful animation.
  1719.  * The height, width, and opacity of each of the matched elements 
  1720.  * are changed dynamically according to the specified speed.
  1721.  *
  1722.  * @example $("p").hide("slow");
  1723.  *
  1724.  * @name hide
  1725.  * @type jQuery
  1726.  * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
  1727.  * @cat Effects/Animations
  1728.  */
  1729.  
  1730. /**
  1731.  * Hide all matched elements using a graceful animation and firing a callback
  1732.  * function after completion.
  1733.  * The height, width, and opacity of each of the matched elements 
  1734.  * are changed dynamically according to the specified speed.
  1735.  *
  1736.  * @example $("p").hide("slow",function(){
  1737.  *   alert("Animation Done.");
  1738.  * });
  1739.  *
  1740.  * @name hide
  1741.  * @type jQuery
  1742.  * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
  1743.  * @param Function callback A function to be executed whenever the animation completes.
  1744.  * @cat Effects/Animations
  1745.  */
  1746. hide: function(speed,callback){
  1747. return speed ? this.animate({
  1748. height: "hide", width: "hide", opacity: "hide"
  1749. }, speed, callback) : this._hide();
  1750. },
  1751. /**
  1752.  * Reveal all matched elements by adjusting their height.
  1753.  * Only the height is adjusted for this animation, causing all matched
  1754.  * elements to be revealed in a "sliding" manner.
  1755.  *
  1756.  * @example $("p").slideDown("slow");
  1757.  *
  1758.  * @name slideDown
  1759.  * @type jQuery
  1760.  * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
  1761.  * @cat Effects/Animations
  1762.  */
  1763.  
  1764. /**
  1765.  * Reveal all matched elements by adjusting their height and firing a callback
  1766.  * function after completion.
  1767.  * Only the height is adjusted for this animation, causing all matched
  1768.  * elements to be revealed in a "sliding" manner.
  1769.  *
  1770.  * @example $("p").slideDown("slow",function(){
  1771.  *   alert("Animation Done.");
  1772.  * });
  1773.  *
  1774.  * @name slideDown
  1775.  * @type jQuery
  1776.  * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
  1777.  * @param Function callback A function to be executed whenever the animation completes.
  1778.  * @cat Effects/Animations
  1779.  */
  1780. slideDown: function(speed,callback){
  1781. return this.animate({height: "show"}, speed, callback);
  1782. },
  1783. /**
  1784.  * Hide all matched elements by adjusting their height.
  1785.  * Only the height is adjusted for this animation, causing all matched
  1786.  * elements to be hidden in a "sliding" manner.
  1787.  *
  1788.  * @example $("p").slideUp("slow");
  1789.  *
  1790.  * @name slideUp
  1791.  * @type jQuery
  1792.  * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
  1793.  * @cat Effects/Animations
  1794.  */
  1795.  
  1796. /**
  1797.  * Hide all matched elements by adjusting their height and firing a callback
  1798.  * function after completion.
  1799.  * Only the height is adjusted for this animation, causing all matched
  1800.  * elements to be hidden in a "sliding" manner.
  1801.  *
  1802.  * @example $("p").slideUp("slow",function(){
  1803.  *   alert("Animation Done.");
  1804.  * });
  1805.  *
  1806.  * @name slideUp
  1807.  * @type jQuery
  1808.  * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
  1809.  * @param Function callback A function to be executed whenever the animation completes.
  1810.  * @cat Effects/Animations
  1811.  */
  1812. slideUp: function(speed,callback){
  1813. return this.animate({height: "hide"}, speed, callback);
  1814. },
  1815. /**
  1816.  * Toggle the visibility of all matched elements by adjusting their height.
  1817.  * Only the height is adjusted for this animation, causing all matched
  1818.  * elements to be hidden in a "sliding" manner.
  1819.  *
  1820.  * @example $("p").slideToggle("slow");
  1821.  *
  1822.  * @name slideToggle
  1823.  * @type jQuery
  1824.  * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
  1825.  * @cat Effects/Animations
  1826.  */
  1827.  
  1828. /**
  1829.  * Toggle the visibility of all matched elements by adjusting their height
  1830.  * and firing a callback function after completion.
  1831.  * Only the height is adjusted for this animation, causing all matched
  1832.  * elements to be hidden in a "sliding" manner.
  1833.  *
  1834.  * @example $("p").slideToggle("slow",function(){
  1835.  *   alert("Animation Done.");
  1836.  * });
  1837.  *
  1838.  * @name slideToggle
  1839.  * @type jQuery
  1840.  * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
  1841.  * @param Function callback A function to be executed whenever the animation completes.
  1842.  * @cat Effects/Animations
  1843.  */
  1844. slideToggle: function(speed,callback){
  1845. return this.each(function(){
  1846. var state = $(this).is(":hidden") ? "show" : "hide";
  1847. $(this).animate({height: state}, speed, callback);
  1848. });
  1849. },
  1850. /**
  1851.  * Fade in all matched elements by adjusting their opacity.
  1852.  * Only the opacity is adjusted for this animation, meaning that
  1853.  * all of the matched elements should already have some form of height
  1854.  * and width associated with them.
  1855.  *
  1856.  * @example $("p").fadeIn("slow");
  1857.  *
  1858.  * @name fadeIn
  1859.  * @type jQuery
  1860.  * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
  1861.  * @cat Effects/Animations
  1862.  */
  1863.  
  1864. /**
  1865.  * Fade in all matched elements by adjusting their opacity and firing a 
  1866.  * callback function after completion.
  1867.  * Only the opacity is adjusted for this animation, meaning that
  1868.  * all of the matched elements should already have some form of height
  1869.  * and width associated with them.
  1870.  *
  1871.  * @example $("p").fadeIn("slow",function(){
  1872.  *   alert("Animation Done.");
  1873.  * });
  1874.  *
  1875.  * @name fadeIn
  1876.  * @type jQuery
  1877.  * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
  1878.  * @param Function callback A function to be executed whenever the animation completes.
  1879.  * @cat Effects/Animations
  1880.  */
  1881. fadeIn: function(speed,callback){
  1882. return this.animate({opacity: "show"}, speed, callback);
  1883. },
  1884. /**
  1885.  * Fade out all matched elements by adjusting their opacity.
  1886.  * Only the opacity is adjusted for this animation, meaning that
  1887.  * all of the matched elements should already have some form of height
  1888.  * and width associated with them.
  1889.  *
  1890.  * @example $("p").fadeOut("slow");
  1891.  *
  1892.  * @name fadeOut
  1893.  * @type jQuery
  1894.  * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
  1895.  * @cat Effects/Animations
  1896.  */
  1897.  
  1898. /**
  1899.  * Fade out all matched elements by adjusting their opacity and firing a 
  1900.  * callback function after completion.
  1901.  * Only the opacity is adjusted for this animation, meaning that
  1902.  * all of the matched elements should already have some form of height
  1903.  * and width associated with them.
  1904.  *
  1905.  * @example $("p").fadeOut("slow",function(){
  1906.  *   alert("Animation Done.");
  1907.  * });
  1908.  *
  1909.  * @name fadeOut
  1910.  * @type jQuery
  1911.  * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
  1912.  * @param Function callback A function to be executed whenever the animation completes.
  1913.  * @cat Effects/Animations
  1914.  */
  1915. fadeOut: function(speed,callback){
  1916. return this.animate({opacity: "hide"}, speed, callback);
  1917. },
  1918. /**
  1919.  * Fade the opacity of all matched elements to a specified opacity.
  1920.  * Only the opacity is adjusted for this animation, meaning that
  1921.  * all of the matched elements should already have some form of height
  1922.  * and width associated with them.
  1923.  *
  1924.  * @example $("p").fadeTo("slow", 0.5);
  1925.  *
  1926.  * @name fadeTo
  1927.  * @type jQuery
  1928.  * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
  1929.  * @param Number opacity The opacity to fade to (a number from 0 to 1).
  1930.  * @cat Effects/Animations
  1931.  */
  1932.  
  1933. /**
  1934.  * Fade the opacity of all matched elements to a specified opacity and 
  1935.  * firing a callback function after completion.
  1936.  * Only the opacity is adjusted for this animation, meaning that
  1937.  * all of the matched elements should already have some form of height
  1938.  * and width associated with them.
  1939.  *
  1940.  * @example $("p").fadeTo("slow", 0.5, function(){
  1941.  *   alert("Animation Done.");
  1942.  * });
  1943.  *
  1944.  * @name fadeTo
  1945.  * @type jQuery
  1946.  * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
  1947.  * @param Number opacity The opacity to fade to (a number from 0 to 1).
  1948.  * @param Function callback A function to be executed whenever the animation completes.
  1949.  * @cat Effects/Animations
  1950.  */
  1951. fadeTo: function(speed,to,callback){
  1952. return this.animate({opacity: to}, speed, callback);
  1953. },
  1954. /**
  1955.  * A function for making your own, custom, animations. The key aspect of
  1956.  * this function is the object of style properties that will be animated,
  1957.  * and to what end. Each key within the object represents a style property
  1958.  * that will also be animated (for example: "height", "top", or "opacity").
  1959.  *
  1960.  * The value associated with the key represents to what end the property
  1961.  * will be animated. If a number is provided as the value, then the style
  1962.  * property will be transitioned from its current state to that new number.
  1963.  * Oterwise if the string "hide", "show", or "toggle" is provided, a default
  1964.  * animation will be constructed for that property.
  1965.  *
  1966.  * @example $("p").animate({
  1967.  *   height: 'toggle', opacity: 'toggle'
  1968.  * }, "slow");
  1969.  *
  1970.  * @example $("p").animate({
  1971.  *   left: 50, opacity: 'show'
  1972.  * }, 500);
  1973.  *
  1974.  * @name animate
  1975.  * @type jQuery
  1976.  * @param Hash params A set of style attributes that you wish to animate, and to what end.
  1977.  * @param Object speed A string representing one of the three predefined speeds ("slow", "normal", or "fast") or the number of milliseconds to run the animation (e.g. 1000).
  1978.  * @param Function callback A function to be executed whenever the animation completes.
  1979.  * @cat Effects/Animations
  1980.  */
  1981. animate: function(prop,speed,callback) {
  1982. return this.queue(function(){
  1983. this.curAnim = prop;
  1984. for ( var p in prop ) {
  1985. var e = new jQuery.fx( this, jQuery.speed(speed,callback), p );
  1986. if ( prop[p].constructor == Number )
  1987. e.custom( e.cur(), prop[p] );
  1988. else
  1989. e[ prop[p] ]( prop );
  1990. }
  1991. });
  1992. },
  1993. /**
  1994.  *
  1995.  * @private
  1996.  */
  1997. queue: function(type,fn){
  1998. if ( !fn ) {
  1999. fn = type;
  2000. type = "fx";
  2001. }
  2002. return this.each(function(){
  2003. if ( !this.queue )
  2004. this.queue = {};
  2005. if ( !this.queue[type] )
  2006. this.queue[type] = [];
  2007. this.queue[type].push( fn );
  2008. if ( this.queue[type].length == 1 )
  2009. fn.apply(this);
  2010. });
  2011. }
  2012. });
  2013. jQuery.extend({
  2014. setAuto: function(e,p) {
  2015. if ( e.notAuto ) return;
  2016. if ( p == "height" && e.scrollHeight != parseInt(jQuery.curCSS(e,p)) ) return;
  2017. if ( p == "width" && e.scrollWidth != parseInt(jQuery.curCSS(e,p)) ) return;
  2018. // Remember the original height
  2019. var a = e.style[p];
  2020. // Figure out the size of the height right now
  2021. var o = jQuery.curCSS(e,p,1);
  2022. if ( p == "height" && e.scrollHeight != o ||
  2023. p == "width" && e.scrollWidth != o ) return;
  2024. // Set the height to auto
  2025. e.style[p] = e.currentStyle ? "" : "auto";
  2026. // See what the size of "auto" is
  2027. var n = jQuery.curCSS(e,p,1);
  2028. // Revert back to the original size
  2029. if ( o != n && n != "auto" ) {
  2030. e.style[p] = a;
  2031. e.notAuto = true;
  2032. }
  2033. },
  2034. speed: function(s,o) {
  2035. o = o || {};
  2036. if ( o.constructor == Function )
  2037. o = { complete: o };
  2038. var ss = { slow: 600, fast: 200 };
  2039. o.duration = (s && s.constructor == Number ? s : ss[s]) || 400;
  2040. // Queueing
  2041. o.oldComplete = o.complete;
  2042. o.complete = function(){
  2043. jQuery.dequeue(this, "fx");
  2044. if ( o.oldComplete && o.oldComplete.constructor == Function )
  2045. o.oldComplete.apply( this );
  2046. };
  2047. return o;
  2048. },
  2049. queue: {},
  2050. dequeue: function(elem,type){
  2051. type = type || "fx";
  2052. if ( elem.queue && elem.queue[type] ) {
  2053. // Remove self
  2054. elem.queue[type].shift();
  2055. // Get next function
  2056. var f = elem.queue[type][0];
  2057. if ( f ) f.apply( elem );
  2058. }
  2059. },
  2060. /*
  2061.  * I originally wrote fx() as a clone of moo.fx and in the process
  2062.  * of making it small in size the code became illegible to sane
  2063.  * people. You've been warned.
  2064.  */
  2065. fx: function( elem, options, prop ){
  2066. var z = this;
  2067. // The users options
  2068. z.o = {
  2069. duration: options.duration || 400,
  2070. complete: options.complete,
  2071. step: options.step
  2072. };
  2073. // The element
  2074. z.el = elem;
  2075. // The styles
  2076. var y = z.el.style;
  2077. // Simple function for setting a style value
  2078. z.a = function(){
  2079. if ( options.step )
  2080. options.step.apply( elem, [ z.now ] );
  2081. if ( prop == "opacity" ) {
  2082. if (jQuery.browser.mozilla && z.now == 1) z.now = 0.9999;
  2083. if (window.ActiveXObject)
  2084. y.filter = "alpha(opacity=" + z.now*100 + ")";
  2085. else
  2086. y.opacity = z.now;
  2087. // My hate for IE will never die
  2088. } else if ( parseInt(z.now) )
  2089. y[prop] = parseInt(z.now) + "px";
  2090. y.display = "block";
  2091. };
  2092. // Figure out the maximum number to run to
  2093. z.max = function(){
  2094. return parseFloat( jQuery.css(z.el,prop) );
  2095. };
  2096. // Get the current size
  2097. z.cur = function(){
  2098. var r = parseFloat( jQuery.curCSS(z.el, prop) );
  2099. return r && r > -10000 ? r : z.max();
  2100. };
  2101. // Start an animation from one number to another
  2102. z.custom = function(from,to){
  2103. z.startTime = (new Date()).getTime();
  2104. z.now = from;
  2105. z.a();
  2106. z.timer = setInterval(function(){
  2107. z.step(from, to);
  2108. }, 13);
  2109. };
  2110. // Simple 'show' function
  2111. z.show = function( p ){
  2112. if ( !z.el.orig ) z.el.orig = {};
  2113. // Remember where we started, so that we can go back to it later
  2114. z.el.orig[prop] = this.cur();
  2115. z.custom( 0, z.el.orig[prop] );
  2116. // Stupid IE, look what you made me do
  2117. if ( prop != "opacity" )
  2118. y[prop] = "1px";
  2119. };
  2120. // Simple 'hide' function
  2121. z.hide = function(){
  2122. if ( !z.el.orig ) z.el.orig = {};
  2123. // Remember where we started, so that we can go back to it later
  2124. z.el.orig[prop] = this.cur();
  2125. z.o.hide = true;
  2126. // Begin the animation
  2127. z.custom(z.el.orig[prop], 0);
  2128. };
  2129. // IE has trouble with opacity if it does not have layout
  2130. if ( jQuery.browser.msie && !z.el.currentStyle.hasLayout )
  2131. y.zoom = "1";
  2132. // Remember  the overflow of the element
  2133. if ( !z.el.oldOverlay )
  2134. z.el.oldOverflow = jQuery.css( z.el, "overflow" );
  2135. // Make sure that nothing sneaks out
  2136. y.overflow = "hidden";
  2137. // Each step of an animation
  2138. z.step = function(firstNum, lastNum){
  2139. var t = (new Date()).getTime();
  2140. if (t > z.o.duration + z.startTime) {
  2141. // Stop the timer
  2142. clearInterval(z.timer);
  2143. z.timer = null;
  2144. z.now = lastNum;
  2145. z.a();
  2146. z.el.curAnim[ prop ] = true;
  2147. var done = true;
  2148. for ( var i in z.el.curAnim )
  2149. if ( z.el.curAnim[i] !== true )
  2150. done = false;
  2151. if ( done ) {
  2152. // Reset the overflow
  2153. y.overflow = z.el.oldOverflow;
  2154. // Hide the element if the "hide" operation was done
  2155. if ( z.o.hide ) 
  2156. y.display = 'none';
  2157. // Reset the property, if the item has been hidden
  2158. if ( z.o.hide ) {
  2159. for ( var p in z.el.curAnim ) {
  2160. y[ p ] = z.el.orig[p] + ( p == "opacity" ? "" : "px" );
  2161. // set its height and/or width to auto
  2162. if ( p == 'height' || p == 'width' )
  2163. jQuery.setAuto( z.el, p );
  2164. }
  2165. }
  2166. }
  2167. // If a callback was provided, execute it
  2168. if( done && z.o.complete && z.o.complete.constructor == Function )
  2169. // Execute the complete function
  2170. z.o.complete.apply( z.el );
  2171. } else {
  2172. // Figure out where in the animation we are and set the number
  2173. var p = (t - this.startTime) / z.o.duration;
  2174. z.now = ((-Math.cos(p*Math.PI)/2) + 0.5) * (lastNum-firstNum) + firstNum;
  2175. // Perform the next step of the animation
  2176. z.a();
  2177. }
  2178. };
  2179. }
  2180. });
  2181. // AJAX Plugin
  2182. // Docs Here:
  2183. // http://jquery.com/docs/ajax/
  2184. /**
  2185.  * Load HTML from a remote file and inject it into the DOM, only if it's
  2186.  * been modified by the server.
  2187.  *
  2188.  * @example $("#feeds").loadIfModified("feeds.html")
  2189.  * @before <div id="feeds"></div>
  2190.  * @result <div id="feeds"><b>45</b> feeds found.</div>
  2191.  *
  2192.  * @name loadIfModified
  2193.  * @type jQuery
  2194.  * @param String url The URL of the HTML file to load.
  2195.  * @param Hash params A set of key/value pairs that will be sent to the server.
  2196.  * @param Function callback A function to be executed whenever the data is loaded.
  2197.  * @cat AJAX
  2198.  */
  2199. jQuery.fn.loadIfModified = function( url, params, callback ) {
  2200. this.load( url, params, callback, 1 );
  2201. };
  2202. /**
  2203.  * Load HTML from a remote file and inject it into the DOM.
  2204.  *
  2205.  * @example $("#feeds").load("feeds.html")
  2206.  * @before <div id="feeds"></div>
  2207.  * @result <div id="feeds"><b>45</b> feeds found.</div>
  2208.  *
  2209.  * @name load
  2210.  * @type jQuery
  2211.  * @param String url The URL of the HTML file to load.
  2212.  * @param Hash params A set of key/value pairs that will be sent to the server.
  2213.  * @param Function callback A function to be executed whenever the data is loaded.
  2214.  * @cat AJAX
  2215.  */
  2216. jQuery.fn.load = function( url, params, callback, ifModified ) {
  2217. if ( url.constructor == Function )
  2218. return this.bind("load", url);
  2219. callback = callback || function(){};
  2220. // Default to a GET request
  2221. var type = "GET";
  2222. // If the second parameter was provided
  2223. if ( params ) {
  2224. // If it's a function
  2225. if ( params.constructor == Function ) {
  2226. // We assume that it's the callback
  2227. callback = params;
  2228. params = null;
  2229. // Otherwise, build a param string
  2230. } else {
  2231. params = jQuery.param( params );
  2232. type = "POST";
  2233. }
  2234. }
  2235. var self = this;
  2236. // Request the remote document
  2237. jQuery.ajax( type, url, params,function(res, status){
  2238. if ( status == "success" || !ifModified && status == "notmodified" ) {
  2239. // Inject the HTML into all the matched elements
  2240. self.html(res.responseText).each( callback, [res.responseText, status] );
  2241. // Execute all the scripts inside of the newly-injected HTML
  2242. $("script", self).each(function(){
  2243. if ( this.src )
  2244. $.getScript( this.src );
  2245. else
  2246. eval.call( window, this.text || this.textContent || this.innerHTML || "" );
  2247. });
  2248. } else
  2249. callback.apply( self, [res.responseText, status] );
  2250. }, ifModified);
  2251. return this;
  2252. };
  2253. /**
  2254.  * A function for serializing a set of input elements into
  2255.  * a string of data.
  2256.  *
  2257.  * @example $("input[@type=text]").serialize();
  2258.  * @before <input type='text' name='name' value='John'/>
  2259.  * <input type='text' name='location' value='Boston'/>
  2260.  * @after name=John&location=Boston
  2261.  * @desc Serialize a selection of input elements to a string
  2262.  *
  2263.  * @name serialize
  2264.  * @type String
  2265.  * @cat AJAX
  2266.  */
  2267. jQuery.fn.serialize = function(){
  2268. return $.param( this );
  2269. };
  2270. // If IE is used, create a wrapper for the XMLHttpRequest object
  2271. if ( jQuery.browser.msie && typeof XMLHttpRequest == "undefined" )
  2272. XMLHttpRequest = function(){
  2273. return new ActiveXObject(
  2274. navigator.userAgent.indexOf("MSIE 5") >= 0 ?
  2275. "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP"
  2276. );
  2277. };
  2278. // Attach a bunch of functions for handling common AJAX events
  2279. /**
  2280.  * Attach a function to be executed whenever an AJAX request begins.
  2281.  *
  2282.  * @example $("#loading").ajaxStart(function(){
  2283.  *   $(this).show();
  2284.  * });
  2285.  * @desc Show a loading message whenever an AJAX request starts.
  2286.  *
  2287.  * @name ajaxStart
  2288.  * @type jQuery
  2289.  * @param Function callback The function to execute.
  2290.  * @cat AJAX
  2291.  */
  2292.  
  2293. /**
  2294.  * Attach a function to be executed whenever all AJAX requests have ended.
  2295.  *
  2296.  * @example $("#loading").ajaxStop(function(){
  2297.  *   $(this).hide();
  2298.  * });
  2299.  * @desc Hide a loading message after all the AJAX requests have stopped.
  2300.  *
  2301.  * @name ajaxStop
  2302.  * @type jQuery
  2303.  * @param Function callback The function to execute.
  2304.  * @cat AJAX
  2305.  */
  2306.  
  2307. /**
  2308.  * Attach a function to be executed whenever an AJAX request completes.
  2309.  *
  2310.  * @example $("#msg").ajaxComplete(function(){
  2311.  *   $(this).append("<li>Request Complete.</li>");
  2312.  * });
  2313.  * @desc Show a message when an AJAX request completes.
  2314.  *
  2315.  * @name ajaxComplete
  2316.  * @type jQuery
  2317.  * @param Function callback The function to execute.
  2318.  * @cat AJAX
  2319.  */
  2320.  
  2321. /**
  2322.  * Attach a function to be executed whenever an AJAX request completes
  2323.  * successfully.
  2324.  *
  2325.  * @example $("#msg").ajaxSuccess(function(){
  2326.  *   $(this).append("<li>Successful Request!</li>");
  2327.  * });
  2328.  * @desc Show a message when an AJAX request completes successfully.
  2329.  *
  2330.  * @name ajaxSuccess
  2331.  * @type jQuery
  2332.  * @param Function callback The function to execute.
  2333.  * @cat AJAX
  2334.  */
  2335.  
  2336. /**
  2337.  * Attach a function to be executed whenever an AJAX request fails.
  2338.  *
  2339.  * @example $("#msg").ajaxError(function(){
  2340.  *   $(this).append("<li>Error requesting page.</li>");
  2341.  * });
  2342.  * @desc Show a message when an AJAX request fails.
  2343.  *
  2344.  * @name ajaxError
  2345.  * @type jQuery
  2346.  * @param Function callback The function to execute.
  2347.  * @cat AJAX
  2348.  */
  2349. new function(){
  2350. var e = "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess".split(",");
  2351. for ( var i = 0; i < e.length; i++ ) new function(){
  2352. var o = e[i];
  2353. jQuery.fn[o] = function(f){
  2354. return this.bind(o, f);
  2355. };
  2356. };
  2357. };
  2358. jQuery.extend({
  2359. /**
  2360.  * Load a remote page using an HTTP GET request. All of the arguments to
  2361.  * the method (except URL) are optional.
  2362.  *
  2363.  * @example $.get("test.cgi")
  2364.  *
  2365.  * @example $.get("test.cgi", { name: "John", time: "2pm" } )
  2366.  *
  2367.  * @example $.get("test.cgi", function(data){
  2368.  *   alert("Data Loaded: " + data);
  2369.  * })
  2370.  *
  2371.  * @example $.get("test.cgi",
  2372.  *   { name: "John", time: "2pm" },
  2373.  *   function(data){
  2374.  *     alert("Data Loaded: " + data);
  2375.  *   }
  2376.  * )
  2377.  *
  2378.  * @name $.get
  2379.  * @type jQuery
  2380.  * @param String url The URL of the page to load.
  2381.  * @param Hash params A set of key/value pairs that will be sent to the server.
  2382.  * @param Function callback A function to be executed whenever the data is loaded.
  2383.  * @cat AJAX
  2384.  */
  2385. get: function( url, data, callback, type, ifModified ) {
  2386. if ( data.constructor == Function ) {
  2387. type = callback;
  2388. callback = data;
  2389. data = null;
  2390. }
  2391. if ( data ) url += "?" + jQuery.param(data);
  2392. // Build and start the HTTP Request
  2393. jQuery.ajax( "GET", url, null, function(r, status) {
  2394. if ( callback ) callback( jQuery.httpData(r,type), status );
  2395. }, ifModified);
  2396. },
  2397. /**
  2398.  * Load a remote page using an HTTP GET request, only if it hasn't
  2399.  * been modified since it was last retrieved. All of the arguments to
  2400.  * the method (except URL) are optional.
  2401.  *
  2402.  * @example $.getIfModified("test.html")
  2403.  *
  2404.  * @example $.getIfModified("test.html", { name: "John", time: "2pm" } )
  2405.  *
  2406.  * @example $.getIfModified("test.cgi", function(data){
  2407.  *   alert("Data Loaded: " + data);
  2408.  * })
  2409.  *
  2410.  * @example $.getifModified("test.cgi",
  2411.  *   { name: "John", time: "2pm" },
  2412.  *   function(data){
  2413.  *     alert("Data Loaded: " + data);
  2414.  *   }
  2415.  * )
  2416.  *
  2417.  * @name $.getIfModified
  2418.  * @type jQuery
  2419.  * @param String url The URL of the page to load.
  2420.  * @param Hash params A set of key/value pairs that will be sent to the server.
  2421.  * @param Function callback A function to be executed whenever the data is loaded.
  2422.  * @cat AJAX
  2423.  */
  2424. getIfModified: function( url, data, callback, type ) {
  2425. jQuery.get(url, data, callback, type, 1);
  2426. },
  2427. /**
  2428.  * Loads, and executes, a remote JavaScript file using an HTTP GET request.
  2429.  * All of the arguments to the method (except URL) are optional.
  2430.  *
  2431.  * @example $.getScript("test.js")
  2432.  *
  2433.  * @example $.getScript("test.js", function(){
  2434.  *   alert("Script loaded and executed.");
  2435.  * })
  2436.  *
  2437.  *
  2438.  * @name $.getScript
  2439.  * @type jQuery
  2440.  * @param String url The URL of the page to load.
  2441.  * @param Function callback A function to be executed whenever the data is loaded.
  2442.  * @cat AJAX
  2443.  */
  2444. getScript: function( url, data, callback ) {
  2445. jQuery.get(url, data, callback, "script");
  2446. },
  2447. /**
  2448.  * Load a remote JSON object using an HTTP GET request.
  2449.  * All of the arguments to the method (except URL) are optional.
  2450.  *
  2451.  * @example $.getJSON("test.js", function(json){
  2452.  *   alert("JSON Data: " + json.users[3].name);
  2453.  * })
  2454.  *
  2455.  * @example $.getJSON("test.js",
  2456.  *   { name: "John", time: "2pm" },
  2457.  *   function(json){
  2458.  *     alert("JSON Data: " + json.users[3].name);
  2459.  *   }
  2460.  * )
  2461.  *
  2462.  * @name $.getJSON
  2463.  * @type jQuery
  2464.  * @param String url The URL of the page to load.
  2465.  * @param Hash params A set of key/value pairs that will be sent to the server.
  2466.  * @param Function callback A function to be executed whenever the data is loaded.
  2467.  * @cat AJAX
  2468.  */
  2469. getJSON: function( url, data, callback ) {
  2470. jQuery.get(url, data, callback, "json");
  2471. },
  2472. /**
  2473.  * Load a remote page using an HTTP POST request. All of the arguments to
  2474.  * the method (except URL) are optional.
  2475.  *
  2476.  * @example $.post("test.cgi")
  2477.  *
  2478.  * @example $.post("test.cgi", { name: "John", time: "2pm" } )
  2479.  *
  2480.  * @example $.post("test.cgi", function(data){
  2481.  *   alert("Data Loaded: " + data);
  2482.  * })
  2483.  *
  2484.  * @example $.post("test.cgi",
  2485.  *   { name: "John", time: "2pm" },
  2486.  *   function(data){
  2487.  *     alert("Data Loaded: " + data);
  2488.  *   }
  2489.  * )
  2490.  *
  2491.  * @name $.post
  2492.  * @type jQuery
  2493.  * @param String url The URL of the page to load.
  2494.  * @param Hash params A set of key/value pairs that will be sent to the server.
  2495.  * @param Function callback A function to be executed whenever the data is loaded.
  2496.  * @cat AJAX
  2497.  */
  2498. post: function( url, data, callback, type ) {
  2499. // Build and start the HTTP Request
  2500. jQuery.ajax( "POST", url, jQuery.param(data), function(r, status) {
  2501. if ( callback ) callback( jQuery.httpData(r,type), status );
  2502. });
  2503. },
  2504. // timeout (ms)
  2505. timeout: 0,
  2506. /**
  2507.  * Set the timeout of all AJAX requests to a specific amount of time.
  2508.  * This will make all future AJAX requests timeout after a specified amount
  2509.  * of time (the default is no timeout).
  2510.  *
  2511.  * @example $.ajaxTimeout( 5000 );
  2512.  * @desc Make all AJAX requests timeout after 5 seconds.
  2513.  *
  2514.  * @name $.ajaxTimeout
  2515.  * @type jQuery
  2516.  * @param Number time How long before an AJAX request times out.
  2517.  * @cat AJAX
  2518.  */
  2519. ajaxTimeout: function(timeout) {
  2520. jQuery.timeout = timeout;
  2521. },
  2522. // Last-Modified header cache for next request
  2523. lastModified: {},
  2524. /**
  2525.  * Load a remote page using an HTTP request. This function is the primary
  2526.  * means of making AJAX requests using jQuery. $.ajax() takes one property,
  2527.  * an object of key/value pairs, that're are used to initalize the request.
  2528.  *
  2529.  * These are all the key/values that can be passed in to 'prop':
  2530.  *
  2531.  * (String) type - The type of request to make (e.g. "POST" or "GET").
  2532.  *
  2533.  * (String) url - The URL of the page to request.
  2534.  * 
  2535.  * (String) data - A string of data to be sent to the server (POST only).
  2536.  *
  2537.  * (String) dataType - The type of data that you're expecting back from
  2538.  * the server (e.g. "xml", "html", "script", or "json").
  2539.  *
  2540.  * (Function) error - A function to be called if the request fails. The
  2541.  * function gets passed two arguments: The XMLHttpRequest object and a
  2542.  * string describing the type of error that occurred.
  2543.  *
  2544.  * (Function) success - A function to be called if the request succeeds. The
  2545.  * function gets passed one argument: The data returned from the server,
  2546.  * formatted according to the 'dataType' parameter.
  2547.  *
  2548.  * (Function) complete - A function to be called when the request finishes. The
  2549.  * function gets passed two arguments: The XMLHttpRequest object and a
  2550.  * string describing the type the success of the request.
  2551.  *
  2552.  * @example $.ajax({
  2553.  *   type: "GET",
  2554.  *   url: "test.js",
  2555.  *   dataType: "script"
  2556.  * })
  2557.  * @desc Load and execute a JavaScript file.
  2558.  *
  2559.  * @example $.ajax({
  2560.  *   type: "POST",
  2561.  *   url: "some.php",
  2562.  *   data: "name=John&location=Boston",
  2563.  *   success: function(msg){
  2564.  *     alert( "Data Saved: " + msg );
  2565.  *   }
  2566.  * });
  2567.  * @desc Save some data to the server and notify the user once its complete.
  2568.  *
  2569.  * @name $.ajax
  2570.  * @type jQuery
  2571.  * @param Hash prop A set of properties to initialize the request with.
  2572.  * @cat AJAX
  2573.  */
  2574. ajax: function( type, url, data, ret, ifModified ) {
  2575. // If only a single argument was passed in,
  2576. // assume that it is a object of key/value pairs
  2577. if ( !url ) {
  2578. ret = type.complete;
  2579. var success = type.success;
  2580. var error = type.error;
  2581. var dataType = type.dataType;
  2582. data = type.data;
  2583. url = type.url;
  2584. type = type.type;
  2585. }
  2586. // Watch for a new set of requests
  2587. if ( ! jQuery.active++ )
  2588. jQuery.event.trigger( "ajaxStart" );
  2589. var requestDone = false;
  2590. // Create the request object
  2591. var xml = new XMLHttpRequest();
  2592. // Open the socket
  2593. xml.open(type || "GET", url, true);
  2594. // Set the correct header, if data is being sent
  2595. if ( data )
  2596. xml.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  2597. // Set the If-Modified-Since header, if ifModified mode.
  2598. if ( ifModified )
  2599. xml.setRequestHeader("If-Modified-Since",
  2600. jQuery.lastModified[url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
  2601. // Set header so calling script knows that it's an XMLHttpRequest
  2602. xml.setRequestHeader("X-Requested-With", "XMLHttpRequest");
  2603. // Make sure the browser sends the right content length
  2604. if ( xml.overrideMimeType )
  2605. xml.setRequestHeader("Connection", "close");
  2606. // Wait for a response to come back
  2607. var onreadystatechange = function(istimeout){
  2608. // The transfer is complete and the data is available, or the request timed out
  2609. if ( xml && (xml.readyState == 4 || istimeout == "timeout") ) {
  2610. requestDone = true;
  2611. var status = jQuery.httpSuccess( xml ) && istimeout != "timeout" ?
  2612. ifModified && jQuery.httpNotModified( xml, url ) ? "notmodified" : "success" : "error";
  2613. // Make sure that the request was successful or notmodified
  2614. if ( status != "error" ) {
  2615. // Cache Last-Modified header, if ifModified mode.
  2616. var modRes = xml.getResponseHeader("Last-Modified");
  2617. if ( ifModified && modRes ) jQuery.lastModified[url] = modRes;
  2618. // If a local callback was specified, fire it
  2619. if ( success )
  2620. success( jQuery.httpData( xml, dataType ), status );
  2621. // Fire the global callback
  2622. jQuery.event.trigger( "ajaxSuccess" );
  2623. // Otherwise, the request was not successful
  2624. } else {
  2625. // If a local callback was specified, fire it
  2626. if ( error ) error( xml, status );
  2627. // Fire the global callback
  2628. jQuery.event.trigger( "ajaxError" );
  2629. }
  2630. // The request was completed
  2631. jQuery.event.trigger( "ajaxComplete" );
  2632. // Handle the global AJAX counter
  2633. if ( ! --jQuery.active )
  2634. jQuery.event.trigger( "ajaxStop" );
  2635. // Process result
  2636. if ( ret ) ret(xml, status);
  2637. // Stop memory leaks
  2638. xml.onreadystatechange = function(){};
  2639. xml = null;
  2640. }
  2641. };
  2642. xml.onreadystatechange = onreadystatechange;
  2643. // Timeout checker
  2644. if(jQuery.timeout > 0)
  2645. setTimeout(function(){
  2646. // Check to see if the request is still happening
  2647. if (xml) {
  2648. // Cancel the request
  2649. xml.abort();
  2650. if ( !requestDone ) onreadystatechange( "timeout" );
  2651. // Clear from memory
  2652. xml = null;
  2653. }
  2654. }, jQuery.timeout);
  2655. // Send the data
  2656. xml.send(data);
  2657. },
  2658. // Counter for holding the number of active queries
  2659. active: 0,
  2660. // Determines if an XMLHttpRequest was successful or not
  2661. httpSuccess: function(r) {
  2662. try {
  2663. return !r.status && location.protocol == "file:" ||
  2664. ( r.status >= 200 && r.status < 300 ) || r.status == 304 ||
  2665. jQuery.browser.safari && r.status == undefined;
  2666. } catch(e){}
  2667. return false;
  2668. },
  2669. // Determines if an XMLHttpRequest returns NotModified
  2670. httpNotModified: function(xml, url) {
  2671. try {
  2672. var xmlRes = xml.getResponseHeader("Last-Modified");
  2673. // Firefox always returns 200. check Last-Modified date
  2674. return xml.status == 304 || xmlRes == jQuery.lastModified[url] ||
  2675. jQuery.browser.safari && xml.status == undefined;
  2676. } catch(e){}
  2677. return false;
  2678. },
  2679. /* Get the data out of an XMLHttpRequest.
  2680.  * Return parsed XML if content-type header is "xml" and type is "xml" or omitted,
  2681.  * otherwise return plain text.
  2682.  * (String) data - The type of data that you're expecting back,
  2683.  * (e.g. "xml", "html", "script")
  2684.  */
  2685. httpData: function(r,type) {
  2686. var ct = r.getResponseHeader("content-type");
  2687. var data = !type && ct && ct.indexOf("xml") >= 0;
  2688. data = type == "xml" || data ? r.responseXML : r.responseText;
  2689. // If the type is "script", eval it
  2690. if ( type == "script" ) eval.call( window, data );
  2691. // Get the JavaScript object, if JSON is used.
  2692. if ( type == "json" ) eval( "data = " + data );
  2693. return data;
  2694. },
  2695. // Serialize an array of form elements or a set of
  2696. // key/values into a query string
  2697. param: function(a) {
  2698. var s = [];
  2699. // If an array was passed in, assume that it is an array
  2700. // of form elements
  2701. if ( a.constructor == Array || a.jquery ) {
  2702. // Serialize the form elements
  2703. for ( var i = 0; i < a.length; i++ )
  2704. s.push( a[i].name + "=" + encodeURIComponent( a[i].value ) );
  2705. // Otherwise, assume that it's an object of key/value pairs
  2706. } else {
  2707. // Serialize the key/values
  2708. for ( var j in a )
  2709. s.push( j + "=" + encodeURIComponent( a[j] ) );
  2710. }
  2711. // Return the resulting serialization
  2712. return s.join("&");
  2713. }
  2714. });