aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/unit/accordion/accordion_methods.js10
-rw-r--r--tests/unit/accordion/accordion_options.js1
-rw-r--r--tests/unit/accordion/accordion_test_helpers.js2
-rw-r--r--ui/jquery.ui.accordion.js20
4 files changed, 19 insertions, 14 deletions
diff --git a/tests/unit/accordion/accordion_methods.js b/tests/unit/accordion/accordion_methods.js
index 9f61647c4..2f4722070 100644
--- a/tests/unit/accordion/accordion_methods.js
+++ b/tests/unit/accordion/accordion_methods.js
@@ -10,15 +10,19 @@ test( "destroy", function() {
});
test( "enable/disable", function() {
- expect( 3 );
+ expect( 4 );
var element = $( "#list1" ).accordion();
accordion_state( element, 1, 0, 0 );
element.accordion( "disable" );
- element.accordion( "option", "active", 1 );
+ // event does nothing
+ element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "click" );
accordion_state( element, 1, 0, 0 );
- element.accordion( "enable" );
+ // option still works
element.accordion( "option", "active", 1 );
accordion_state( element, 0, 1, 0 );
+ element.accordion( "enable" );
+ element.accordion( "option", "active", 2 );
+ accordion_state( element, 0, 0, 1 );
});
test( "refresh", function() {
diff --git a/tests/unit/accordion/accordion_options.js b/tests/unit/accordion/accordion_options.js
index 8206b1d62..74a9a3177 100644
--- a/tests/unit/accordion/accordion_options.js
+++ b/tests/unit/accordion/accordion_options.js
@@ -152,6 +152,7 @@ test( "{ event: custom }", function() {
// ensure old event handlers are unbound
element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom1" );
+ element.find( ".ui-accordion-header" ).eq( 1 ).trigger( "custom2" );
equal( element.accordion( "option", "active" ), 2 );
accordion_state( element, 0, 0, 1 );
diff --git a/tests/unit/accordion/accordion_test_helpers.js b/tests/unit/accordion/accordion_test_helpers.js
index 7b316e983..542809ea0 100644
--- a/tests/unit/accordion/accordion_test_helpers.js
+++ b/tests/unit/accordion/accordion_test_helpers.js
@@ -3,7 +3,7 @@ function accordion_state( accordion ) {
var actual = accordion.find( ".ui-accordion-content" ).map(function() {
return $( this ).css( "display" ) === "none" ? 0 : 1;
}).get();
- deepEqual( actual, expected );
+ QUnit.push( QUnit.equiv(actual, expected), actual, expected );
}
function accordion_equalHeights( accordion, min, max ) {
diff --git a/ui/jquery.ui.accordion.js b/ui/jquery.ui.accordion.js
index 169a07409..2200732ac 100644
--- a/ui/jquery.ui.accordion.js
+++ b/ui/jquery.ui.accordion.js
@@ -68,8 +68,6 @@ $.widget( "ui.accordion", {
this.headers
.attr( "role", "tab" )
- // TODO: use _bind()
- .bind( "keydown.accordion", $.proxy( this, "_keydown" ) )
.next()
.attr( "role", "tabpanel" );
@@ -161,8 +159,7 @@ $.widget( "ui.accordion", {
if ( key === "event" ) {
if ( this.options.event ) {
- // TODO: this is incorrect for multiple events (see _setupEvents)
- this.headers.unbind( this.options.event + ".accordion", this._eventHandler );
+ this.headers.unbind( ".accordion" );
}
this._setupEvents( value );
}
@@ -190,8 +187,7 @@ $.widget( "ui.accordion", {
},
_keydown: function( event ) {
- // TODO: remove disabled check when using _bind()
- if ( this.options.disabled || event.altKey || event.ctrlKey ) {
+ if ( event.altKey || event.ctrlKey ) {
return;
}
@@ -300,11 +296,15 @@ $.widget( "ui.accordion", {
},
_setupEvents: function( event ) {
+ var events = {
+ keydown: "_keydown"
+ };
if ( event ) {
- // TODO: use _bind()
- this.headers.bind( event.split( " " ).join( ".accordion " ) + ".accordion",
- $.proxy( this, "_eventHandler" ) );
+ $.each( event.split(" "), function( index, eventName ) {
+ events[ eventName ] = "_eventHandler";
+ });
}
+ this._bind( this.headers, events );
},
_eventHandler: function( event ) {
@@ -324,7 +324,7 @@ $.widget( "ui.accordion", {
event.preventDefault();
- if ( options.disabled ||
+ if (
// click on active header, but not collapsible
( clickedIsActive && !options.collapsible ) ||
// allow canceling activation