From: Yehuda Katz Date: Mon, 13 Jul 2009 22:21:40 +0000 (+0000) Subject: clearQueue and next should now work with default fx on all browsers X-Git-Url: http://git.asbjorn.biz/?p=jquery.git;a=commitdiff_plain;h=89dc1e01435ebeef173c9a843096cd5c1fbc9dd8 clearQueue and next should now work with default fx on all browsers --- diff --git a/src/data.js b/src/data.js index 8714ab9..bf54e75 100644 --- a/src/data.js +++ b/src/data.js @@ -130,11 +130,11 @@ jQuery.fn.extend({ if ( data === undefined ) return jQuery.queue( this[0], type ); - return this.each(function(){ + return this.each(function(i, elem){ var queue = jQuery.queue( this, type, data ); - if( type == "fx" && queue.length == 1 ) - queue[0].call(this); + if( type == "fx" && queue.length == 1 ) + queue[0].call(this, function() { jQuery(elem).dequeue(type); }); }); }, dequeue: function(type){ @@ -143,6 +143,6 @@ jQuery.fn.extend({ }); }, clearQueue: function(type){ - return this.queue( type, [] ); + return this.queue( type || "fx", [] ); } }); \ No newline at end of file diff --git a/test/unit/data.js b/test/unit/data.js index 5d390e1..812ccd2 100644 --- a/test/unit/data.js +++ b/test/unit/data.js @@ -180,22 +180,6 @@ test("queue(name) passes in the next item in the queue as a parameter", function div.removeData(); }); - expect(1); - - var div = jQuery({}); - var counter = 0; - - div.queue("foo", function(next) { - counter++; - jQuery(this).clearQueue("foo"); - next(); - }).queue("foo", function(next) { - counter++; - }); - - div.dequeue("foo"); - - equals(counter, 1, "the queue was cleared"); test("queue(name) passes in the next item in the queue as a parameter", function() { expect(2); @@ -229,12 +213,10 @@ test("queue() passes in the next item in the queue as a parameter to fx queues", }).queue(function(next) { equals(++counter, 2, "Next was called"); next(); - }).queue(function() { + }).queue("bar", function() { equals(++counter, 3, "Other queues are not triggered by next()") }); - div.dequeue(); - div.removeData(); }); @@ -255,6 +237,8 @@ test("clearQueue(name) clears the queue", function() { div.dequeue("foo"); equals(counter, 1, "the queue was cleared"); + + div.removeData(); }); test("clearQueue() clears the fx queue", function() { @@ -265,13 +249,12 @@ test("clearQueue() clears the fx queue", function() { div.queue(function(next) { counter++; - jQuery(this).clearQueue(); - next(); + setTimeout(function() { jQuery(this).clearQueue(); next(); }, 50); }).queue(function(next) { counter++; }); - div.dequeue(); - equals(counter, 1, "the queue was cleared"); -}) + + div.removeData(); +});