accordion: fixed incosistent accordionchange event arguments (http://dev.jquery.com/ticket/3111)

This commit is contained in:
Jörn Zaefferer 2008-07-13 14:42:27 +00:00
parent d1b099907d
commit 30952e6b3f
2 changed files with 33 additions and 4 deletions

View File

@ -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);

View File

@ -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))