Prova questa:
var button = $('<button type="button"/>');
Ora, come accade, il tipo predefinito per i pulsanti è "pulsante" comunque in IE (7, almeno, non è sicuro su standard-mode 8). Tuttavia, quanto sopra dovrebbe funzionare. Mi sono imbattuto in questo l'altro giorno. IE ti permette di fornire il tipo proprio lì nella sintassi dell'elemento durante la creazione di elementi, e sembra che jQuery stia passando il suo argomento direttamente all'API DOM di basso livello qui.
Oh, e funziona bene anche in FF e Chrome.
modificare — bene quello che una differenza di un anno fa, eh? Non riesco a far funzionare il meccanismo per me ora con jQuery 1.4.4 o jQuery 1.5.x. La buona notizia è che jQuery 1.6 sembra funzionare come voleva l'OP: tramite l'impostazione di "tipo" in un modo più simile a jQuery.
Ciò che fa sembra funzionare, tuttavia, è chiamare direttamente ".setAttribute()" sull'elemento. Così:
var b = $('<button/>');
b[0].setAttribute('type', 'button');
fa non gettare un'eccezione, ed è fa impostare il "tipo" attributo correttamente. (Questo è di per sé un po 'bizzarro, dato che Microsoft documenta chiaramente il "tipo" come di sola lettura.) Il cambiamento in 1.6 sembra essere sulla stessa linea. Precedentemente, la libreria controllava "type" e rifiutava esplicitamente di essere impostata su elementi già presenti nel DOM, ma procedeva nel tentativo di impostarla come un semplice attributo per un elemento non nel DOM. Ora, il codice 1.6 chiama ".setAttribute()" per impostare "type", che (per ragioni a me sconosciute) funziona correttamente.
Un '
In realtà [pulsante] (http://www.w3.org/TR/html401/interact/forms.html#h-17.5) il valore predefinito è type = submit. Il pulsante – Tgr
ha un attributo type, type = button, type = submit e type = reset – salmane