mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Button: use _hoverable for hover state management. Fixes #5295 - button doesn't remove hover state if they are disabled
This commit is contained in:
parent
11687e44dc
commit
8e1ceba717
@ -5,6 +5,17 @@
|
||||
|
||||
module( "button: tickets" );
|
||||
|
||||
test( "#5295 - button does not remove hoverstate if disabled" , function() {
|
||||
expect( 1 );
|
||||
var btn = $("#button").button();
|
||||
btn.hover( function() {
|
||||
btn.button( "disable" );
|
||||
});
|
||||
btn.trigger( "mouseenter" );
|
||||
btn.trigger( "mouseleave" );
|
||||
ok( !btn.is( ".ui-state-hover") );
|
||||
});
|
||||
|
||||
test( "#5946 - buttonset should ignore buttons that are not :visible", function() {
|
||||
expect( 2 );
|
||||
$( "#radio01" ).next().andSelf().hide();
|
||||
|
7
ui/jquery.ui.button.js
vendored
7
ui/jquery.ui.button.js
vendored
@ -70,13 +70,15 @@ $.widget( "ui.button", {
|
||||
var that = this,
|
||||
options = this.options,
|
||||
toggleButton = this.type === "checkbox" || this.type === "radio",
|
||||
hoverClass = "ui-state-hover" + ( !toggleButton ? " ui-state-active" : "" ),
|
||||
activeClass = !toggleButton ? "ui-state-active" : "",
|
||||
focusClass = "ui-state-focus";
|
||||
|
||||
if ( options.label === null ) {
|
||||
options.label = (this.type === "input" ? this.buttonElement.val() : this.buttonElement.html());
|
||||
}
|
||||
|
||||
this._hoverable( this.buttonElement );
|
||||
|
||||
this.buttonElement
|
||||
.addClass( baseClasses )
|
||||
.attr( "role", "button" )
|
||||
@ -84,7 +86,6 @@ $.widget( "ui.button", {
|
||||
if ( options.disabled ) {
|
||||
return;
|
||||
}
|
||||
$( this ).addClass( "ui-state-hover" );
|
||||
if ( this === lastActive ) {
|
||||
$( this ).addClass( "ui-state-active" );
|
||||
}
|
||||
@ -93,7 +94,7 @@ $.widget( "ui.button", {
|
||||
if ( options.disabled ) {
|
||||
return;
|
||||
}
|
||||
$( this ).removeClass( hoverClass );
|
||||
$( this ).removeClass( activeClass );
|
||||
})
|
||||
.bind( "click" + this.eventNamespace, function( event ) {
|
||||
if ( options.disabled ) {
|
||||
|
Loading…
Reference in New Issue
Block a user