Skip to content

Commit 80e46c9

Browse files
committed
Autocomplete: Append to closest .ui-front if available.
1 parent 2c16435 commit 80e46c9

File tree

3 files changed

+21
-9
lines changed

3 files changed

+21
-9
lines changed

tests/unit/autocomplete/autocomplete_common.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
TestHelpers.commonWidgetTests( "autocomplete", {
22
defaults: {
3-
appendTo: "body",
3+
appendTo: null,
44
autoFocus: false,
55
delay: 300,
66
disabled: false,

tests/unit/autocomplete/autocomplete_options.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ test( "appendTo", function() {
1818
equal( $( "#ac-wrap2 .ui-autocomplete" ).length, 0, "only appends to one element" );
1919
element.autocomplete( "destroy" );
2020

21-
element.autocomplete({
22-
appendTo: null
23-
});
24-
equal( element.autocomplete( "widget" ).parent()[0], document.body, "null" );
21+
$( "#ac-wrap2" ).addClass( "ui-front" );
22+
element.autocomplete();
23+
equal( element.autocomplete( "widget" ).parent()[0], $( "#ac-wrap2" )[0], "null, inside .ui-front" );
2524
element.autocomplete( "destroy" );
25+
$( "#ac-wrap2" ).removeClass( "ui-front" );
2626

2727
element.autocomplete().autocomplete( "option", "appendTo", "#ac-wrap1" );
2828
equal( element.autocomplete( "widget" ).parent()[0], $( "#ac-wrap1" )[0], "modified after init" );

ui/jquery.ui.autocomplete.js

+16-4
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ $.widget( "ui.autocomplete", {
2323
version: "@VERSION",
2424
defaultElement: "<input>",
2525
options: {
26-
appendTo: "body",
26+
appendTo: null,
2727
autoFocus: false,
2828
delay: 300,
2929
minLength: 1,
@@ -323,10 +323,22 @@ $.widget( "ui.autocomplete", {
323323

324324
_appendTo: function() {
325325
var element = this.options.appendTo;
326-
if ( element && (element.jquery || element.nodeType) ) {
327-
return $( element );
326+
327+
if ( element ) {
328+
element = element.jquery || element.nodeType ?
329+
$( element ) :
330+
this.document.find( element ).eq( 0 );
331+
}
332+
333+
if ( !element ) {
334+
element = this.element.closest( ".ui-front" );
328335
}
329-
return this.document.find( element || "body" ).eq( 0 );
336+
337+
if ( !element.length ) {
338+
element = this.document[0].body;
339+
}
340+
341+
return element;
330342
},
331343

332344
_isMultiLine: function() {

0 commit comments

Comments
 (0)