From 30952e6b3f80da814e6d7ff633fc1eac0b3c4a13 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=B6rn=20Zaefferer?= Date: Sun, 13 Jul 2008 14:42:27 +0000 Subject: [PATCH] accordion: fixed incosistent accordionchange event arguments (http://dev.jquery.com/ticket/3111) --- tests/accordion.js | 30 ++++++++++++++++++++++++++++++ ui/ui.accordion.js | 7 +++---- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/tests/accordion.js b/tests/accordion.js index e957acd43..ff3719b41 100644 --- a/tests/accordion.js +++ b/tests/accordion.js @@ -99,4 +99,34 @@ test("handle click on header-descendant", function() { state2(ac, 0, 1, 0); }); +test("active:false", function() { + $("#list1").accordion({ + active: false, + alwaysOpen: false + }); + equals( $("#list1 a.selected").size(), 0, "no headers selected" ); +}); + +test("accordionchange event, open closed and close again", function() { + expect(8); + $("#list1").accordion({ + active: false, + alwaysOpen: false + }) + .one("accordionchange", function(event, ui) { + equals( ui.oldHeader.size(), 0 ) + equals( ui.oldContent.size(), 0 ) + equals( ui.newHeader.size(), 1 ) + equals( ui.newContent.size(), 1 ) + }) + .accordion("activate", 0) + .one("accordionchange", function(event, ui) { + equals( ui.oldHeader.size(), 1 ) + equals( ui.oldContent.size(), 1 ) + equals( ui.newHeader.size(), 0 ) + equals( ui.newContent.size(), 0 ) + }) + .accordion("activate", 0); +}); + })(jQuery); diff --git a/ui/ui.accordion.js b/ui/ui.accordion.js index 2cf014b8e..4865c317e 100644 --- a/ui/ui.accordion.js +++ b/ui/ui.accordion.js @@ -201,12 +201,11 @@ function clickHandler(event) { // find elements to show and hide var toShow = clicked.next(), toHide = options.active.next(), - //data = [clicked, options.active, toShow, toHide], data = { options: options, - newHeader: clicked, + newHeader: clickedActive && !options.alwaysOpen ? $([]) : clicked, oldHeader: options.active, - newContent: toShow, + newContent: clickedActive && !options.alwaysOpen ? $([]) : toShow, oldContent: toHide }, down = options.headers.index( options.active[0] ) > options.headers.index( clicked[0] ); @@ -218,7 +217,7 @@ function clickHandler(event) { }; function findActive(headers, selector) { - return selector != undefined + return selector ? typeof selector == "number" ? headers.filter(":eq(" + selector + ")") : headers.not(headers.not(selector)) -- 2.39.5