aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJörn Zaefferer <joern.zaefferer@gmail.com>2009-01-30 16:49:40 +0000
committerJörn Zaefferer <joern.zaefferer@gmail.com>2009-01-30 16:49:40 +0000
commitcc62471b4f6647883ef5aa8a24cfa54578f49533 (patch)
tree6148bdc50db9486134c205a8a53de2bd05856fa8
parent00b0b3661f31e79b65753f3c4b18ca26cc70404a (diff)
downloadjquery-ui-cc62471b4f6647883ef5aa8a24cfa54578f49533.tar.gz
jquery-ui-cc62471b4f6647883ef5aa8a24cfa54578f49533.zip
accordion: fix for the previous commit; event triggering still somewhat crippled, a few tests failing
-rw-r--r--tests/visual/accordion/accordion.html2
-rw-r--r--ui/ui.accordion.js28
2 files changed, 13 insertions, 17 deletions
diff --git a/tests/visual/accordion/accordion.html b/tests/visual/accordion/accordion.html
index b5322391a..bdea21248 100644
--- a/tests/visual/accordion/accordion.html
+++ b/tests/visual/accordion/accordion.html
@@ -10,7 +10,7 @@
<script type="text/javascript">
$(function() {
function on() {
- $("#accordion").accordion({ header: "h3" });
+ $("#accordion").accordion();
}
function off() {
$("#accordion").accordion("destroy");
diff --git a/ui/ui.accordion.js b/ui/ui.accordion.js
index 0ecbfeb24..da1712dcc 100644
--- a/ui/ui.accordion.js
+++ b/ui/ui.accordion.js
@@ -85,12 +85,13 @@ $.widget("ui.accordion", {
this.headers.find('a').attr('tabIndex','-1');
if (o.event) {
- this.element.bind((o.event) + ".accordion", function(event) { return self._clickHandler.call(self, event); });
+ this.headers.bind((o.event) + ".accordion", function(event) { return self._clickHandler.call(self, event, this); });
}
},
destroy: function() {
+ var o = this.options;
this.element
.removeClass("ui-accordion ui-widget ui-helper-reset")
@@ -105,8 +106,10 @@ $.widget("ui.accordion", {
this.headers.find("a").removeAttr("tabindex");
this.headers.children(".ui-icon").remove();
- this.headers.next().removeClass("ui-accordion-content ui-accordion-content-active");
-
+ var contents = this.headers.next().css("display", "").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active");
+ if (o.autoHeight || o.fillHeight) {
+ contents.css("height", "");
+ }
},
_keydown: function(event) {
@@ -131,7 +134,7 @@ $.widget("ui.accordion", {
break;
case keyCode.SPACE:
case keyCode.ENTER:
- return this._clickHandler({ target: event.target });
+ return this._clickHandler({ target: event.target }, event.target);
}
if (toFocus) {
@@ -176,7 +179,8 @@ $.widget("ui.accordion", {
activate: function(index) {
// call clickHandler with custom event
- this._clickHandler({ target: this._findActive(index)[0] });
+ var active = this._findActive(index)[0];
+ this._clickHandler({ target: active }, active);
},
_findActive: function(selector) {
@@ -189,7 +193,7 @@ $.widget("ui.accordion", {
: this.headers.filter(":eq(0)");
},
- _clickHandler: function(event) {
+ _clickHandler: function(event, target) {
var o = this.options;
if (o.disabled) return false;
@@ -213,21 +217,13 @@ $.widget("ui.accordion", {
}
// get the click target
- var clicked = $(event.target);
-
- // due to the event delegation model, we have to check if one
- // of the parent elements is our actual header, and find that
- // otherwise stick with the initial target
- clicked = $( clicked.parents(o.header)[0] || clicked );
+ var clicked = $(event.currentTarget || target);
var clickedIsActive = clicked[0] == this.active[0];
// if animations are still active, or the active header is the target, ignore click
if (this.running || (o.alwaysOpen && clickedIsActive)) {
return false;
}
- if (!clicked.is(o.header)) {
- return;
- }
// switch classes
this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all")
@@ -373,7 +369,7 @@ $.extend($.ui.accordion, {
clearStyle: false,
event: "click",
fillSpace: false,
- header: "> li :first,> :not(li):odd",
+ header: "> li :first,> :not(li):even",
icons: {
header: "ui-icon-triangle-1-e",
headerSelected: "ui-icon-triangle-1-s"