Add clearQueue for clearing non-fx queues
authorYehuda Katz <wycats@gmail.com>
Sun, 12 Jul 2009 15:14:01 +0000 (15:14 +0000)
committerYehuda Katz <wycats@gmail.com>
Sun, 12 Jul 2009 15:14:01 +0000 (15:14 +0000)
src/data.js
test/unit/data.js

index e429c0d..8c79c21 100644 (file)
@@ -93,7 +93,7 @@ jQuery.extend({
 \r
                if( fn !== undefined )\r
                        fn.call(elem, function() { jQuery(elem).dequeue(type); });\r
-       }\r
+       },\r
 });\r
 \r
 jQuery.fn.extend({\r
@@ -141,5 +141,8 @@ jQuery.fn.extend({
                return this.each(function(){\r
                        jQuery.dequeue( this, type );\r
                });\r
+       },\r
+       clearQueue: function(type){\r
+               return this.queue( type, [] );\r
        }\r
 });
\ No newline at end of file
index 3389ef3..5d390e1 100644 (file)
@@ -159,7 +159,7 @@ test("queue() with other types",function() {
        $div.removeData();\r
 });\r
 \r
-test("queue() passes in the next item in the queue as a parameter", function() {\r
+test("queue(name) passes in the next item in the queue as a parameter", function() {\r
        expect(2);\r
        \r
        var div = jQuery({});\r
@@ -178,4 +178,100 @@ test("queue() passes in the next item in the queue as a parameter", function() {
        div.dequeue("foo");\r
        \r
        div.removeData();\r
+});\r
+\r
+       expect(1);\r
+       \r
+       var div = jQuery({});\r
+       var counter = 0;\r
+       \r
+       div.queue("foo", function(next) {\r
+               counter++;\r
+               jQuery(this).clearQueue("foo");\r
+               next();\r
+       }).queue("foo", function(next) {\r
+               counter++;\r
+       });\r
+       \r
+       div.dequeue("foo");\r
+       \r
+       equals(counter, 1, "the queue was cleared");\r
+test("queue(name) passes in the next item in the queue as a parameter", function() {\r
+       expect(2);\r
+       \r
+       var div = jQuery({});\r
+       var counter = 0;\r
+       \r
+       div.queue("foo", function(next) {\r
+               equals(++counter, 1, "Dequeueing");\r
+               next();\r
+       }).queue("foo", function(next) {\r
+               equals(++counter, 2, "Next was called");\r
+               next();\r
+       }).queue("bar", function() {\r
+               equals(++counter, 3, "Other queues are not triggered by next()")\r
+       });\r
+       \r
+       div.dequeue("foo");\r
+       \r
+       div.removeData();\r
+});\r
+\r
+test("queue() passes in the next item in the queue as a parameter to fx queues", function() {\r
+       expect(2);\r
+       \r
+       var div = jQuery({});\r
+       var counter = 0;\r
+       \r
+       div.queue(function(next) {\r
+               equals(++counter, 1, "Dequeueing");\r
+               next();\r
+       }).queue(function(next) {\r
+               equals(++counter, 2, "Next was called");\r
+               next();\r
+       }).queue(function() {\r
+               equals(++counter, 3, "Other queues are not triggered by next()")\r
+       });\r
+       \r
+       div.dequeue();\r
+       \r
+       div.removeData();\r
+});\r
+\r
+test("clearQueue(name) clears the queue", function() {\r
+       expect(1);\r
+       \r
+       var div = jQuery({});\r
+       var counter = 0;\r
+       \r
+       div.queue("foo", function(next) {\r
+               counter++;\r
+               jQuery(this).clearQueue("foo");\r
+               next();\r
+       }).queue("foo", function(next) {\r
+               counter++;\r
+       });\r
+       \r
+       div.dequeue("foo");\r
+       \r
+       equals(counter, 1, "the queue was cleared");\r
+});\r
+\r
+test("clearQueue() clears the fx queue", function() {\r
+       expect(1);\r
+       \r
+       var div = jQuery({});\r
+       var counter = 0;\r
+       \r
+       div.queue(function(next) {\r
+               counter++;\r
+               jQuery(this).clearQueue();\r
+               next();\r
+       }).queue(function(next) {\r
+               counter++;\r
+       });\r
+       \r
+       div.dequeue();\r
+       \r
+       equals(counter, 1, "the queue was cleared");\r
 })\r