<div id="main">
<div id="list1">
- <a>There is one obvious advantage:</a>
- <div>
- <p>
- You've seen it coming!<br/>
- Buy now and get nothing for free!<br/>
- Well, at least no free beer. Perhaps a bear, if you can afford it.
- </p>
- </div>
- <a>Now that you've got...</a>
- <div>
- <p>
- your bear, you have to admit it!<br/>
- No, we aren't selling bears.
- </p>
- <p>
- We could talk about renting one.
- </p>
- </div>
- <a>Rent one bear, ...</a>
- <div>
- <p>
- get two for three beer.
- </p>
- <p>
- And now, for something completely different.
- </p>
- </div>
+ <div>
+ <a>There is one obvious advantage:</a>
+ <div>
+ <p>
+ You've seen it coming!
+ <br/>
+ Buy now and get nothing for free!
+ <br/>
+ Well, at least no free beer. Perhaps a bear, if you can afford it.
+ </p>
+ </div>
+ </div>
+ <div>
+ <a>Now that you've got...</a>
+ <div>
+ <p>
+ your bear, you have to admit it!
+ <br/>
+ No, we aren't selling bears.
+ </p>
+ <p>
+ We could talk about renting one.
+ </p>
+ </div>
+ </div>
+ <div>
+ <a>Rent one bear, ...</a>
+ <div>
+ <p>
+ get two for three beer.
+ </p>
+ <p>
+ And now, for something completely different.
+ </p>
+ </div>
+ </div>
</div>
<ul id="navigation">
<li>
- <a class="head" href="?p=1.1.1">Guitar</a>
+ <a href="?p=1.1.1">Guitar</a>
<ul>
<li><a href="?p=1.1.1.1">Electric</a></li>
<li><a href="?p=1.1.1.2">Acoustic</a></li>
</ul>
</li>
<li>
- <a class="head" href="?p=1.1.2"><span>Bass</span></a>
+ <a href="?p=1.1.2"><span>Bass</span></a>
<ul>
<li><a href="?p=1.1.2.1">Electric</a></li>
<li><a href="?p=1.1.2.2">Acoustic</a></li>
</ul>
</li>
<li>
- <a class="head" href="?p=1.1.3">Drums</a>
+ <a href="?p=1.1.3">Drums</a>
<ul>
<li><a href="?p=1.1.3.2">Acoustic Drums</a></li>
<li><a href="?p=1.1.3.3">Electronic Drums</a></li>
</ul>
</li>
</ul>
- <dl id="list2">
- <dt class="red">Red</dt>
- <dd>
- Fancy stuff about red thingies.
- </dd>
- <dt class="green selected">Green</dt>
- <dd>
- Green! Green! Green!
- </dd>
- <dt class="blue">Blue</dt>
- <dd>
- Cool kids are blue.
- </dd>
- </dl>
-
- <div id="list3">
- <div>
- <div class="title">Tennis</div>
- <div>
- One ball, two players. Lots of fun.
- </div>
- </div>
- <div>
- <div class="title">Soccer</div>
- <div>
- One ball, 22 players. Lots of fun.
- </div>
- </div>
- <div>
- <div class="title">Baseball</div>
- <div>
- Well, one ball, some guys running around, some guys hitting others with a stick.<br/>
- Sounds like fun, doesn't it?
- </div>
- <div>
- Well, apart from the running part.
- </div>
- </div>
- </div>
</div>
function state(accordion) {
var args = $.makeArray(arguments).slice(1);
$.each(args, function(i, n) {
- equals(accordion.find("div").eq(i).is(":visible"), n);
+ equals(accordion.find(".ui-accordion-content").eq(i).is(":visible"), n);
});
}
});
test("autoheight", function() {
- $('#navigation').accordion({ header: '.head', autoHeight: false });
+ $('#navigation').accordion({ autoHeight: false });
equals( 90, $('#navigation ul:first').height() );
equals( 126, $('#navigation ul:eq(1)').height() );
equals( 54, $('#navigation ul:last').height() );
- $('#navigation').accordion("destroy").accordion({ header: '.head', autoHeight: true });
+ $('#navigation').accordion("destroy").accordion({ autoHeight: true });
equals( 126, $('#navigation ul:first').height() );
equals( 126, $('#navigation ul:eq(1)').height() );
equals( 126, $('#navigation ul:last').height() );
});
test("activate, string expression", function() {
- var ac = $('#list1').accordion({ active: ":last" });
+ var ac = $('#list1').accordion({ active: "a:last" });
state(ac, 0, 0, 1);
ac.accordion("activate", ":first");
state(ac, 1, 0, 0);
}
test("handle click on header-descendant", function() {
- var ac = $('#navigation').accordion({ header: '.head', autoHeight: false })
+ var ac = $('#navigation').accordion({ autoHeight: false })
ac.triggerEvent("click", $('#navigation span:contains(Bass)')[0]);
state2(ac, 0, 1, 0);
});
--- /dev/null
+<!doctype html>\r
+<html lang="en">\r
+<head>\r
+ <title>jQuery UI Accordion Visual Test</title>\r
+\r
+ <link rel="stylesheet" href="../../themes/base/ui.core.css" type="text/css">\r
+ <link rel="stylesheet" href="../../themes/base/ui.theme.css" type="text/css">\r
+ <link rel="stylesheet" href="../../themes/base/ui.accordion.css" type="text/css">\r
+\r
+ <script type="text/javascript" src="../../jquery-1.2.6.js"></script>\r
+ <script type="text/javascript" src="../../ui/ui.core.js"></script>\r
+ <script type="text/javascript" src="../../ui/ui.accordion.js"></script>\r
+\r
+ <script type="text/javascript">\r
+ $(function() {\r
+ function enable() {\r
+ $("#myAccordion").accordion({\r
+ header: "h3"\r
+ });\r
+ }\r
+ function disable() {\r
+ $("#myAccordion").accordion("destroy");\r
+ }\r
+ $("#toggle").toggle(enable, disable);\r
+ //enable();\r
+ })\r
+ </script>\r
+</head>\r
+<body style="font-size: 62.5%;">\r
+\r
+ <div id="myAccordion">\r
+ <div>\r
+ <h3><a href="#">Test 1</a></h3>\r
+ <div>\r
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit\r
+ </div>\r
+ </div>\r
+ <div>\r
+ <h3><a href="#">Test 2</a></h3>\r
+ <div>\r
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit\r
+ </div>\r
+ </div>\r
+ <div>\r
+ <h3><a href="#">Test 3</a></h3>\r
+ <div>\r
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit\r
+ </div>\r
+ </div>\r
+ </div>\r
+\r
+ <button id="toggle">Toggle</button>\r
+\r
+</body>\r
+</html>\r
}
}
}
-
- // calculate active if not specified, using the first header
- options.headers = this.element.find(options.header);
- options.active = findActive(options.headers, options.active);
+
+ this.element.addClass("ui-accordion ui-widget ui-helper-reset");
+ var groups = this.element.children().addClass("ui-accordion-group");
+ var headers = options.headers = groups.find("> :first-child").addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all");
+ headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
+
+ var active = options.active = findActive(headers, options.active).toggleClass("ui-state-default").toggleClass("ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");
+ active.parent().addClass("selected");
+ $("<span/>").addClass("ui-icon ui-icon-circle-plus").prependTo(headers);
+ active.find(".ui-icon").toggleClass("ui-icon-circle-plus").toggleClass("ui-icon-circle-minus");
// IE7-/Win - Extra vertical space in Lists fixed
if ($.browser.msie) {
this.element.find('a').css('zoom', '1');
}
- if (!this.element.hasClass("ui-accordion")) {
- this.element.addClass("ui-accordion");
- $('<span class="ui-accordion-left"/>').insertBefore(options.headers);
- $('<span class="ui-accordion-right"/>').appendTo(options.headers);
- options.headers.addClass("ui-accordion-header");
- }
-
var maxHeight;
if ( options.fillSpace ) {
maxHeight = this.element.parent().height();
} else {
options.active
.attr('aria-expanded','true')
- .attr("tabIndex", "0")
- .parent().andSelf().addClass(options.selectedClass);
+ .attr("tabIndex", "0");
}
// only need links in taborder for Safari
},
destroy: function() {
- this.options.headers.parent().andSelf().removeClass(this.options.selectedClass);
- this.options.headers.prev(".ui-accordion-left").remove();
- this.options.headers.children(".ui-accordion-right").remove();
- this.options.headers.next().css("display", "");
- if ( this.options.fillSpace || this.options.autoHeight ) {
- this.options.headers.next().css("height", "");
- }
+ this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role").unbind(".accordion");
$.removeData(this.element[0], "accordion");
-
- this.element.removeClass("ui-accordion").unbind(".accordion");
+ var groups = this.element.children().removeClass("ui-accordion-group selected");
+ var headers = this.options.headers.removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top")
+ .removeAttr("role").removeAttr("aria-expanded").removeAttr("tabindex");
+ headers.find("a").removeAttr("tabindex");
+ headers.next().removeClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom")
+ .removeAttr("role").css({display: "", height: "", overflow: "", marginTop:"", marginBottom:""});
+ headers.children(".ui-icon").remove();
},
_keydown: function(event) {
if (options.disabled) {
return false;
}
-
// called only when using activate(false) to close all parts programmatically
if ( !event.target && !options.alwaysOpen ) {
- options.active.parent().andSelf().toggleClass(options.selectedClass);
+ options.active.parent().toggleClass(options.selectedClass);
var toHide = options.active.next(),
data = {
options: options,
}
// switch classes
- options.active.parent().andSelf().toggleClass(options.selectedClass);
+ options.active.parent().toggleClass(options.selectedClass);
+ options.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all")
+ .find(".ui-icon").removeClass("ui-icon-circle-minus").addClass("ui-icon-circle-plus");
if ( !clickedActive ) {
- clicked.parent().andSelf().addClass(options.selectedClass);
+ clicked.parent().addClass(options.selectedClass);
+ clicked.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top")
+ .find(".ui-icon").removeClass("ui-icon-circle-plus").addClass("ui-icon-circle-minus");
}
// find elements to show and hide