clearQueue and next should now work with default fx on all browsers
[jquery.git] / src / data.js
index 5f2e5ae..bf54e75 100644 (file)
@@ -70,16 +70,16 @@ jQuery.extend({
        },\r
        queue: function( elem, type, data ) {\r
                if ( elem ){\r
-       \r
+\r
                        type = (type || "fx") + "queue";\r
-       \r
+\r
                        var q = jQuery.data( elem, type );\r
-       \r
+\r
                        if ( !q || jQuery.isArray(data) )\r
                                q = jQuery.data( elem, type, jQuery.makeArray(data) );\r
                        else if( data )\r
                                q.push( data );\r
-       \r
+\r
                }\r
                return q;\r
        },\r
@@ -87,12 +87,12 @@ jQuery.extend({
        dequeue: function( elem, type ){\r
                var queue = jQuery.queue( elem, type ),\r
                        fn = queue.shift();\r
-               \r
+\r
                if( !type || type === "fx" )\r
                        fn = queue[0];\r
-                       \r
+\r
                if( fn !== undefined )\r
-                       fn.call(elem);\r
+                       fn.call(elem, function() { jQuery(elem).dequeue(type); });\r
        }\r
 });\r
 \r
@@ -130,16 +130,19 @@ jQuery.fn.extend({
                if ( data === undefined )\r
                        return jQuery.queue( this[0], type );\r
 \r
-               return this.each(function(){\r
+               return this.each(function(i, elem){\r
                        var queue = jQuery.queue( this, type, data );\r
-                       \r
-                        if( type == "fx" && queue.length == 1 )\r
-                               queue[0].call(this);\r
+\r
+                       if( type == "fx" && queue.length == 1 )\r
+                               queue[0].call(this, function() { jQuery(elem).dequeue(type); });\r
                });\r
        },\r
        dequeue: function(type){\r
                return this.each(function(){\r
                        jQuery.dequeue( this, type );\r
                });\r
+       },\r
+       clearQueue: function(type){\r
+               return this.queue( type || "fx", [] );\r
        }\r
 });
\ No newline at end of file