state( ac, 0, 0, 0 );
});
-// TODO: add event tests
+test( "{ event: null }", function() {
+ var ac = $( "#list1" ).accordion({
+ event: null
+ });
+ state( ac, 1, 0, 0 );
+
+ ac.accordion( "option", "active", 1 );
+ equal( ac.accordion( "option", "active" ), 1 );
+ state( ac, 0, 1, 0 );
+
+ // ensure default click handler isn't bound
+ ac.find( ".ui-accordion-header" ).eq( 2 ).click();
+ equal( ac.accordion( "option", "active" ), 1 );
+ state( ac, 0, 1, 0 );
+});
+
+test( "{ event: custom }", function() {
+ var ac = $( "#list1" ).accordion({
+ event: "custom1 custom2"
+ });
+ state( ac, 1, 0, 0 );
+
+ ac.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom1" );
+ equal( ac.accordion( "option", "active" ), 1 );
+ state( ac, 0, 1, 0 );
+
+ // ensure default click handler isn't bound
+ ac.find( ".ui-accordion-header" ).eq( 2 ).trigger( "click" );
+ equal( ac.accordion( "option", "active" ), 1 );
+ state( ac, 0, 1, 0 );
+
+ ac.find( ".ui-accordion-header" ).eq( 2 ).trigger( "custom2" );
+ equal( ac.accordion( "option", "active" ), 2 );
+ state( ac, 0, 0, 1 );
+
+ ac.accordion( "option", "event", "custom3" );
+
+ // ensure old event handlers are unbound
+ ac.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom1" );
+ equal( ac.accordion( "option", "active" ), 2 );
+ state( ac, 0, 0, 1 );
+
+ ac.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom3" );
+ equal( ac.accordion( "option", "active" ), 1 );
+ state( ac, 0, 1, 0 );
+});
test( "{ header: default }", function() {
// default: > li > :first-child,> :not(li):even
self.headers.find( "a" ).attr( "tabIndex", -1 );
}
- if ( options.event ) {
- self.headers.bind( options.event.split( " " ).join( ".accordion " ) + ".accordion",
- $.proxy( self, "_eventHandler" ) );
- }
+ this._setupEvents( options.event );
},
_createIcons: function() {
this._activate( 0 );
}
+ if ( key === "event" ) {
+ this._setupEvents( value );
+ }
+
if ( key === "icons" ) {
this._destroyIcons();
if ( value ) {
return typeof selector === "number" ? this.headers.eq( selector ) : $();
},
+ _setupEvents: function( event ) {
+ this.headers.unbind( ".accordion" );
+ if ( event ) {
+ this.headers.bind( event.split( " " ).join( ".accordion " ) + ".accordion",
+ $.proxy( this, "_eventHandler" ) );
+ }
+ },
+
_eventHandler: function( event ) {
var options = this.options,
active = this.active,