mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Accordion: Handle changing the event option. Fixes #6740 - Dynamically changing accordion's event handler doesn't actually change the behaviour.
This commit is contained in:
parent
84a4a4442d
commit
f70f01af9e
@ -105,7 +105,52 @@ test( "{ collapsible: true }", function() {
|
|||||||
state( ac, 0, 0, 0 );
|
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() {
|
test( "{ header: default }", function() {
|
||||||
// default: > li > :first-child,> :not(li):even
|
// default: > li > :first-child,> :not(li):even
|
||||||
|
17
ui/jquery.ui.accordion.js
vendored
17
ui/jquery.ui.accordion.js
vendored
@ -96,10 +96,7 @@ $.widget( "ui.accordion", {
|
|||||||
self.headers.find( "a" ).attr( "tabIndex", -1 );
|
self.headers.find( "a" ).attr( "tabIndex", -1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( options.event ) {
|
this._setupEvents( options.event );
|
||||||
self.headers.bind( options.event.split( " " ).join( ".accordion " ) + ".accordion",
|
|
||||||
$.proxy( self, "_eventHandler" ) );
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_createIcons: function() {
|
_createIcons: function() {
|
||||||
@ -164,6 +161,10 @@ $.widget( "ui.accordion", {
|
|||||||
this._activate( 0 );
|
this._activate( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( key === "event" ) {
|
||||||
|
this._setupEvents( value );
|
||||||
|
}
|
||||||
|
|
||||||
if ( key === "icons" ) {
|
if ( key === "icons" ) {
|
||||||
this._destroyIcons();
|
this._destroyIcons();
|
||||||
if ( value ) {
|
if ( value ) {
|
||||||
@ -284,6 +285,14 @@ $.widget( "ui.accordion", {
|
|||||||
return typeof selector === "number" ? this.headers.eq( selector ) : $();
|
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 ) {
|
_eventHandler: function( event ) {
|
||||||
var options = this.options,
|
var options = this.options,
|
||||||
active = this.active,
|
active = this.active,
|
||||||
|
Loading…
Reference in New Issue
Block a user