r1907 - in trunk: tests/visual/accordion ui

r1907 - in trunk: tests/visual/accordion ui


Author: joern.zaefferer
Date: Fri Jan 30 08:49:40 2009
New Revision: 1907
Modified:
trunk/tests/visual/accordion/accordion.html
trunk/ui/ui.accordion.js
Log:
accordion: fix for the previous commit; event triggering still somewhat
crippled, a few tests failing
Modified: trunk/tests/visual/accordion/accordion.html
==============================================================================
--- trunk/tests/visual/accordion/accordion.html    (original)
+++ trunk/tests/visual/accordion/accordion.html    Fri Jan 30 08:49:40 2009
@@ -10,7 +10,7 @@
    <script type="text/javascript">
        $(function() {
            function on() {
-                $("#accordion").accordion({ header: "h3" });
+                $("#accordion").accordion();
            }
            function off() {
                $("#accordion").accordion("destroy");
Modified: trunk/ui/ui.accordion.js
==============================================================================
--- trunk/ui/ui.accordion.js    (original)
+++ trunk/ui/ui.accordion.js    Fri Jan 30 08:49:40 2009
@@ -85,12 +85,13 @@
            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 @@
        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 @@
                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 @@
    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 @@
                : 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 @@
        }
        // 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 @@
        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"