Skip to content
Permalink
Browse files

Autocomplete: Optimize element type checks for speed and size.

  • Loading branch information
scottgonzalez committed Feb 5, 2013
1 parent df077ab commit 101a09d31f65ab62c7bc68e54aacd68028c1765b
Showing with 15 additions and 18 deletions.
  1. +15 −18 ui/jquery.ui.autocomplete.js
@@ -54,10 +54,21 @@ $.widget( "ui.autocomplete", {
// so we use the suppressKeyPressRepeat flag to avoid handling keypress
// events when we know the keydown event was used to modify the
// search term. #7799
var suppressKeyPress, suppressKeyPressRepeat, suppressInput;

this.isMultiLine = this._isMultiLine();
this.valueMethod = this.element[ this.element.is( "input,textarea" ) ? "val" : "text" ];
var suppressKeyPress, suppressKeyPressRepeat, suppressInput,
nodeName = this.element[0].nodeName.toLowerCase(),
isTextarea = nodeName === "textarea",
isInput = nodeName === "input";

this.isMultiLine =
// Textareas are always multi-line
isTextarea ? true :
// Inputs are always single-line, even if inside a contentEditable element
// IE also treats inputs as contentEditable
isInput ? false :
// All other element types are determined by whether or not they're contentEditable
this.element.prop( "isContentEditable" );

this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
this.isNewMenu = true;

this.element
@@ -341,20 +352,6 @@ $.widget( "ui.autocomplete", {
return element;
},

_isMultiLine: function() {
// Textareas are always multi-line
if ( this.element.is( "textarea" ) ) {
return true;
}
// Inputs are always single-line, even if inside a contentEditable element
// IE also treats inputs as contentEditable
if ( this.element.is( "input" ) ) {
return false;
}
// All other element types are determined by whether or not they're contentEditable
return this.element.prop( "isContentEditable" );
},

_initSource: function() {
var array, url,
that = this;

0 comments on commit 101a09d

Please sign in to comment.
You can’t perform that action at this time.