X-Git-Url: http://git.asbjorn.biz/?p=jquery.git;a=blobdiff_plain;f=src%2Fqueue.js;h=9e3e2fb52c266102d23c45e47d050b02b368da8a;hp=3770f4d9072acac3173acd2cf7ec7116ce746ed9;hb=d343bfe528cbb8b08c3beb94cb33d1c444932f06;hpb=e083d15fc786a853e54b800e3798536f1d958301 diff --git a/src/queue.js b/src/queue.js index 3770f4d..9e3e2fb 100644 --- a/src/queue.js +++ b/src/queue.js @@ -1,41 +1,60 @@ +(function( jQuery ) { + jQuery.extend({ queue: function( elem, type, data ) { - if ( !elem ) { return; } + if ( !elem ) { + return; + } type = (type || "fx") + "queue"; - var q = jQuery.data( elem, type ); + var q = jQuery._data( elem, type ); // Speed up dequeue by getting out quickly if this is just a lookup - if ( !data ) { return q || []; } + if ( !data ) { + return q || []; + } if ( !q || jQuery.isArray(data) ) { - q = jQuery.data( elem, type, jQuery.makeArray(data) ); + q = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { q.push( data ); } + return q; }, - dequeue: function( elem, type ){ + dequeue: function( elem, type ) { type = type || "fx"; - var queue = jQuery.queue( elem, type ), fn = queue.shift(); + var queue = jQuery.queue( elem, type ), + fn = queue.shift(); // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { fn = queue.shift(); } + if ( fn === "inprogress" ) { + fn = queue.shift(); + } if ( fn ) { // Add a progress sentinel to prevent the fx queue from being // automatically dequeued - if ( type === "fx" ) { queue.unshift("inprogress"); } + if ( type === "fx" ) { + queue.unshift("inprogress"); + } - fn.call(elem, function() { jQuery.dequeue(elem, type); }); + fn.call(elem, function() { + jQuery.dequeue(elem, type); + }); + } + + if ( !queue.length ) { + jQuery.removeData( elem, type + "queue", true ); } } }); jQuery.fn.extend({ - queue: function(type, data){ + queue: function( type, data ) { if ( typeof type !== "string" ) { data = type; type = "fx"; @@ -44,7 +63,7 @@ jQuery.fn.extend({ if ( data === undefined ) { return jQuery.queue( this[0], type ); } - return this.each(function(i, elem){ + return this.each(function( i ) { var queue = jQuery.queue( this, type, data ); if ( type === "fx" && queue[0] !== "inprogress" ) { @@ -52,8 +71,8 @@ jQuery.fn.extend({ } }); }, - dequeue: function(type){ - return this.each(function(){ + dequeue: function( type ) { + return this.each(function() { jQuery.dequeue( this, type ); }); }, @@ -72,7 +91,9 @@ jQuery.fn.extend({ }); }, - clearQueue: function(type){ + clearQueue: function( type ) { return this.queue( type || "fx", [] ); } }); + +})( jQuery );