code: function (elm) {
          var attrs;
  
          elm = this.get(elm);
  
          if (!elm) {
            return [];
          }
  
          if (isIE) {
            attrs = [];
  
            // Object will throw exception in IE
            if (elm.nodeName == 'OBJECT') {
              return elm.attributes;
            }
  
            // IE doesn't keep the selected attribute if you clone option elements
            if (elm.nodeName === 'OPTION' && this.getAttrib(elm, 'selected')) {
              attrs.push({ specified: 1, nodeName: 'selected' });
            }
  
            // It's crazy that this is faster in IE but it's because it returns all attributes all the time
            var attrRegExp = /<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi;
            elm.cloneNode(false).outerHTML.replace(attrRegExp, '').replace(/[\w:\-]+/gi, function (a) {
              attrs.push({ specified: 1, nodeName: a });
            });
  
            return attrs;
          }
  
          return elm.attributes;
        }
docs: Returns a NodeList with attributes for the element.
  
  @method getAttribs
  @param {HTMLElement/string} elm Element node or string id to get attributes from.
  @return {NodeList} NodeList with attributes.