Select field has createList function that creates List of options, which is configured with hideOnMaskTap: true. If a user taps one of the items in this List, it gets hidden and destroyed properly. However if a user taps on a mask, the list gets hidden but is never destroyed and therefore stays in DOM forever.

Proposed solution in Select.js (the changes are highlighted in red):
createList: function() {
        return new Ext.List({
            tpl  : [
                '<tpl for=".">',
                    '<div class="x-list-item">',
                        '<span class="x-list-label">{' + this.displayField + '}</span>',
                        '<span class="x-list-selected"></span>',
            cls             : 'x-select-overlay',
            itemSelector    : '.x-list-item',
            floating        : true,
            stopMaskTapEvent: true,
            hideOnMaskTap   : true,
            singleSelect    : true,
            listeners: {
                selectionchange: {
                    fn: this.onListSelect,
                    scope: this
                hide: function() {

    onListSelect : function(list, node, records) {
        var me       = this,
            selected = records[0];
        if (selected) {
            me.fireEvent('select', me, me.getValue());
            type: 'fade',
            out: true
// This is not needed because the list gets destroyed by its own hide event
//          after: function() {
//              me.list.destroy();
//          },
//          scope: me
Something like this. It should to the trick although I haven't personally tested it