mirror of
https://github.com/jquery/jquery-ui.git
synced 2025-01-07 20:34:24 +00:00
Button: find associated label even without common ancestor. Fixes #7092 - button creation that requires a matching label does not find label in all cases
(cherry picked from commit 0b30a1d450
)
This commit is contained in:
parent
c5b0a8660a
commit
2d6ad06873
@ -20,4 +20,26 @@ test( "#6262 - buttonset not applying ui-corner to invisible elements", function
|
||||
ok( set.find( "label:eq(2)" ).is( ".ui-button.ui-corner-right" ) );
|
||||
});
|
||||
|
||||
test( "#7092 - button creation that requires a matching label does not find label in all cases", function() {
|
||||
var group = $( "<span><label for='t7092a'/><input type='checkbox' id='t7092a'/></span>" );
|
||||
group.find( "input:checkbox" ).button();
|
||||
ok( group.find( "label" ).is( ".ui-button" ) );
|
||||
|
||||
group = $( "<input type='checkbox' id='t7092b'/><label for='t7092b'/>" );
|
||||
group.filter( "input:checkbox" ).button();
|
||||
ok( group.filter( "label" ).is( ".ui-button" ) );
|
||||
|
||||
group = $( "<span><input type='checkbox' id='t7092c'/></span><label for='t7092c'/>" );
|
||||
group.find( "input:checkbox" ).button();
|
||||
ok( group.filter( "label" ).is( ".ui-button" ) );
|
||||
|
||||
group = $( "<span><input type='checkbox' id='t7092d'/></span><span><label for='t7092d'/></span>" );
|
||||
group.find( "input:checkbox" ).button();
|
||||
ok( group.find( "label" ).is( ".ui-button" ) );
|
||||
|
||||
group = $( "<input type='checkbox' id='t7092e'/><span><label for='t7092e'/></span>" );
|
||||
group.filter( "input:checkbox" ).button();
|
||||
ok( group.find( "label" ).is( ".ui-button" ) );
|
||||
});
|
||||
|
||||
})( jQuery );
|
||||
|
12
ui/jquery.ui.button.js
vendored
12
ui/jquery.ui.button.js
vendored
@ -200,8 +200,16 @@ $.widget( "ui.button", {
|
||||
if ( this.type === "checkbox" || this.type === "radio" ) {
|
||||
// we don't search against the document in case the element
|
||||
// is disconnected from the DOM
|
||||
this.buttonElement = this.element.parents().last()
|
||||
.find( "label[for=" + this.element.attr("id") + "]" );
|
||||
var ancestor = this.element.parents().last(),
|
||||
labelSelector = "label[for=" + this.element.attr("id") + "]";
|
||||
this.buttonElement = ancestor.find( labelSelector );
|
||||
if ( !this.buttonElement.length ) {
|
||||
ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();
|
||||
this.buttonElement = ancestor.filter( labelSelector );
|
||||
if ( !this.buttonElement.length ) {
|
||||
this.buttonElement = ancestor.find( labelSelector );
|
||||
}
|
||||
}
|
||||
this.element.addClass( "ui-helper-hidden-accessible" );
|
||||
|
||||
var checked = this.element.is( ":checked" );
|
||||
|
Loading…
Reference in New Issue
Block a user