Apenas para complementar a resposta de Roman Holzner ...
No meu caso, tenho um botão que mostra a dica de ferramenta e ela deve permanecer desativada até mais ações. Usando essa abordagem, o modal funciona mesmo que o botão esteja desativado, porque sua chamada está fora do botão - estou em um arquivo blade do Laravel, só para esclarecer :)
<span data-toggle="modal" data-target="#confirm-delete" data-href="{{ $e->id }}">
<button name="delete" class="btn btn-default" data-toggle="tooltip" data-placement="bottom" title="Excluir Entrada" disabled>
<i class="fa fa-trash fa-fw"></i>
</button>
</span>
Portanto, se você quiser mostrar o modal apenas quando o botão estiver ativo, altere a ordem das tags:
<span data-toggle="tooltip" data-placement="bottom" title="Excluir Entrada" disabled>
<button name="delete" class="btn btn-default" data-href="{{ $e->id }}" data-toggle="modal" data-target="#confirm-delete" disabled>
<i class="fa fa-trash fa-fw"></i>
</button>
</span>
Se você quiser testá-lo, altere o atributo com um código JQuery:
$('button[name=delete]').attr('disabled', false);