diff --git a/js/jquery.mobile.forms.select.js b/js/jquery.mobile.forms.select.js
index 2404dd97..c20ae3e4 100644
--- a/js/jquery.mobile.forms.select.js
+++ b/js/jquery.mobile.forms.select.js
@@ -25,15 +25,20 @@ $.widget( "mobile.selectmenu", $.mobile.widget, {
initSelector: "select:not(:jqmData(role='slider'))"
},
- _native: function(element){
- var self = this;
+ _common: function(){
return {
+ select: this.element.wrap( "
" )
+ };
+ },
+
+ _native: function(){
+ var self = this;
+
+ return $.extend(this._common(), {
typeName: 'native',
button: $( "
" ),
- select: self.element.wrap( "
" ),
-
create: function(){
var self = this;
@@ -56,11 +61,13 @@ $.widget( "mobile.selectmenu", $.mobile.widget, {
.removeClass( $.mobile.activeBtnClass );
});
}
- };
+ });
},
_custom: function(){
- return {
+ var self = this;
+
+ return $.extend(this._common(), {
typeName: 'custom',
button: $( "
", {
@@ -75,9 +82,24 @@ $.widget( "mobile.selectmenu", $.mobile.widget, {
}),
create: function(){
+ this.select.attr( "tabindex", "-1" )
+ .focus(function() {
+ $(this).blur();
+ button.focus();
+ });
+ // Button events
+ this.button.bind( "vclick keydown" , function( event ) {
+ if ( event.type == "vclick" ||
+ event.keyCode && ( event.keyCode === $.mobile.keyCode.ENTER ||
+ event.keyCode === $.mobile.keyCode.SPACE ) ) {
+
+ self.open();
+ event.preventDefault();
+ }
+ });
}
- };
+ });
},
_create: function() {
@@ -238,22 +260,7 @@ $.widget( "mobile.selectmenu", $.mobile.widget, {
// Create list from select, update state
self.refresh();
- select.attr( "tabindex", "-1" )
- .focus(function() {
- $(this).blur();
- button.focus();
- });
-
- // Button events
- button.bind( "vclick keydown" , function( event ) {
- if ( event.type == "vclick" ||
- event.keyCode && ( event.keyCode === $.mobile.keyCode.ENTER ||
- event.keyCode === $.mobile.keyCode.SPACE ) ) {
-
- self.open();
- event.preventDefault();
- }
- });
+ menu.create();
// Events for list items
list.attr( "role", "listbox" )