Fixed accordion option active getter and setter. Normalized getter to number, 0-based index.

This commit is contained in:
Richard Worth 2009-08-11 00:45:01 +00:00
parent 57e3595115
commit 7b506cf2ae
2 changed files with 20 additions and 1 deletions

View File

@ -38,7 +38,20 @@ test("{ active: false }", function() {
}); });
test("{ active: Number }", function() { test("{ active: Number }", function() {
ok(false, 'missing test - untested code is broken code'); expect(4);
$("#list1").accordion({
active: 0
});
equals( $("#list1").accordion('option', 'active'), 0);
$("#list1").accordion('option', 'active', 1);
equals( $("#list1").accordion('option', 'active'), 1);
$('.ui-accordion-header:eq(2)', '#list1').click();
equals( $("#list1").accordion('option', 'active'), 2);
$("#list1").accordion('activate', 0);
equals( $("#list1").accordion('option', 'active'), 0);
}); });
test("{ animated: false }, default", function() { test("{ animated: false }, default", function() {

View File

@ -153,6 +153,9 @@ $.widget("ui.accordion", {
$.widget.prototype._setData.apply(this, arguments); $.widget.prototype._setData.apply(this, arguments);
if (key == "active") {
this.activate(value);
}
if (key == "icons") { if (key == "icons") {
this._destroyIcons(); this._destroyIcons();
if (value) { if (value) {
@ -230,6 +233,7 @@ $.widget("ui.accordion", {
}, },
activate: function(index) { activate: function(index) {
this.options.active = index;
// call clickHandler with custom event // call clickHandler with custom event
var active = this._findActive(index)[0]; var active = this._findActive(index)[0];
this._clickHandler({ target: active }, active); this._clickHandler({ target: active }, active);
@ -273,6 +277,8 @@ $.widget("ui.accordion", {
// get the click target // get the click target
var clicked = $(event.currentTarget || target); var clicked = $(event.currentTarget || target);
var clickedIsActive = clicked[0] == this.active[0]; var clickedIsActive = clicked[0] == this.active[0];
o.active = $('.ui-accordion-header', this.element).index(clicked);
// if animations are still active, or the active header is the target, ignore click // if animations are still active, or the active header is the target, ignore click
if (this.running || (!o.collapsible && clickedIsActive)) { if (this.running || (!o.collapsible && clickedIsActive)) {