preventDefault () não funciona

Quando eu uso event.preventDefault () em um link funciona, no entanto, quando eu usá-lo em um botão não!
DEMO
meu código:

<code><a id="link" href="http://www.google.com">link</a>
<button id="button" onclick="alert('an alert')">button</button>​

$('#link').click(function(event){
  event.preventDefault();
});
$('#button').click(function(event){
  event.preventDefault();
});
</code>

A ação de link é cancelada, mas quando eu clico no botão, ainda executa a ação onClick
Qualquer ajuda? o que eu quero fazer é impedir o botão de ação onClicksem alterar o botão html (Eu sei fazer

$('#button').removeAttr('onclick');

questionAnswers(4)

yourAnswerToTheQuestion